Avatar billede pfp Nybegynder
29. juni 2005 - 17:17 Der er 15 kommentarer og
1 løsning

ASP.net, SP og SQL Server

Hejsa,

Jeg har en Stored Procedure på SQL Server 2005 beta2.

Den tager bl.a. nogle nvarchar som parametre.

Når jeg kalder den fra min aspx side med input fra f.eks. nogle textboxe så er resultatet i databasen at kun første tegn af input strengen indsættes...sp'en tager også et par int, som parses fra en textbox og her indsættes tallet i dets fuldelængde.

Nogen der ved hvad der kan være galt?
Avatar billede arne_v Ekspert
29. juni 2005 - 18:33 #1
må vi se lidt kode ? (koden som kalde SP og selve SP eller ihvertfals headeren)
Avatar billede pfp Nybegynder
29. juni 2005 - 19:05 #2
Selvfølgelig,

Selve SP:
ALTER PROCEDURE [CreateCountry]
    @ShopId bigint,
    @Country nvarchar,
    @Locale nvarchar,
    @LCID int
AS
    INSERT INTO Countries
    (ShopId, Country, Locale, LCID)
    VALUES
    (@ShopId, @Country, @Locale, @LCID)
RETURN

Min C# metode hvor jeg kalder SP'en:
public static bool CreateCountry(int shopId, string country, string locale, int lcid)
    {
        try
        {
            conn.Open();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = conn;
            cmd.CommandText = "CreateCountry";
            cmd.Parameters.AddWithValue("@ShopId", shopId);
            cmd.Parameters.AddWithValue("@Country", country);
            cmd.Parameters.AddWithValue("@Locale", locale);
            cmd.Parameters.AddWithValue("@LCID", lcid);

            cmd.ExecuteNonQuery();

            cmd.Dispose();
            conn.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
    }

Og kaldet:
CreateCountry(100, txtCountry.Text, txtLocale.Text, int.Parse(txtLCID.Text));

Jeg er lost..
Avatar billede arne_v Ekspert
29. juni 2005 - 19:11 #3
prøv evt. at angive database felt type når du adder parameters
Avatar billede pfp Nybegynder
29. juni 2005 - 19:13 #4
Hvordan mener du?

cmd.Parameters.AddWithValue("@LCID", int lcid); ??
Avatar billede arne_v Ekspert
29. juni 2005 - 19:16 #5
nej

cmd.Parameters.Add("@LCID", SqlDbType.Int);
cms.Parameters["@LCID"].Value  = lcid;
Avatar billede arne_v Ekspert
29. juni 2005 - 19:16 #6
ja og så er det jo nvarchar og ikke int felterne som er mest interessante
Avatar billede arne_v Ekspert
29. juni 2005 - 19:17 #7
iøvrigt må SQLServer bigint svare til C# long
Avatar billede pfp Nybegynder
30. juni 2005 - 00:17 #8
Hej,

Har lige prøvet som du foreslog:
cmd.Parameters.AddWithValue("@Country", SqlDbType.NVarChar);
cmd.Parameters["@Country"].Value = country;´

Hvis jeg indtaster Danmark som indput giver det stadig kun "D" i databasen. Jeg har lige prøvet at bruge proceduren fra en win-form, med samme resultat.
Avatar billede arne_v Ekspert
30. juni 2005 - 00:20 #9
hvad hvis du sætter længd epå også

cmd.Parameters.AddWithValue("@Country", SqlDbType.NVarChar, 20);
cmd.Parameters["@Country"].Value = country;´
Avatar billede pfp Nybegynder
30. juni 2005 - 01:09 #10
AddWithValue kan ikke tage 3 parametre, prøvede at sætte den således istedet:

cmd.Parameters.AddWithValue("@Country", SqlDbType.NVarChar);
cmd.Parameters["@Country"].Size = 50;
cmd.Parameters["@Country"].Value = country;

Men stadig det samme..
Avatar billede pfp Nybegynder
30. juni 2005 - 10:17 #11
Det er åbentbart i selve SP'en det er galt. Fordi der ikke er angivet længde på mine nvarchar parametre..
Avatar billede arne_v Ekspert
30. juni 2005 - 10:32 #12
det mener jeg faktisk heller ikke er nødvendigt, men du kan da prøve det
Avatar billede pfp Nybegynder
30. juni 2005 - 10:36 #13
Har lige prøvet det, og det virker.

Hvis man definerer nvarchar eller varchar er de åbentbart som default længde = 1
Avatar billede arne_v Ekspert
30. juni 2005 - 10:48 #14
bare det virker

:-)
Avatar billede pfp Nybegynder
30. juni 2005 - 13:17 #15
Ja det holdt også hårdt, har spekuleret over det til langt ud på natten.

Hvis du ligger et svar får du point for ulejligheden.
Avatar billede arne_v Ekspert
30. juni 2005 - 13:19 #16
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester