Avatar billede nielsen2002 Nybegynder
26. december 2005 - 23:28 Der er 19 kommentarer og
1 løsning

Problem med brug af Parameter

Hej Eksperten.

Jeg har et problem med en Select streng, hvor jeg har brugt en Parameter. se koden nedenunder:

strSQL = "SELECT * FROM users WHERE UserID=@UserID ;"
                     
objCmd.Parameters.Add("@UserID", MySqlDbType.Int32)
objCmd.Parameters("@UserID").Value = ddl.SelectedItem.Text

Men får fejlen:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

i linien:
objCmd.Parameters.Add("@UserID", MySqlDbType.Int32).

Hvad gør jeg forkert, det virker fint hvis jeg blot angiver en værdi for UserID i SQL'en..

MVH
martin
Avatar billede arne_v Ekspert
26. december 2005 - 23:31 #1
lyder som ddl eller ddl.SelectedItem er Nothing
Avatar billede nielsen2002 Nybegynder
26. december 2005 - 23:36 #2
okay.  hvordan kan jeg teste det?
jeg har prøvet at ændre

objCmd.Parameters("@UserID").Value = ddl.SelectedItem.Text  til
objCmd.Parameters("@UserID").Value = "1"

men jeg får samme fejl..
Avatar billede arne_v Ekspert
26. december 2005 - 23:39 #3
hvordan ser initialiseringen af objCmd ud ?
Avatar billede nielsen2002 Nybegynder
26. december 2005 - 23:41 #4
mener du det her?

Dim objCmd As New MySqlCommand
Avatar billede arne_v Ekspert
26. december 2005 - 23:41 #5
ja
Avatar billede arne_v Ekspert
26. december 2005 - 23:42 #6
og du sætter vel også strSQL ind i objCmd
Avatar billede nielsen2002 Nybegynder
26. december 2005 - 23:43 #7
okay, 
før stod der
Dim objCmd As MySqlCommand, der gav den de fejl jeg beskrev før, 

nu har jeg ændret den til
Dim objCmd As New MySqlCommand

men nu sker der intet.. 
hvilken en er rigtig?
Avatar billede nielsen2002 Nybegynder
26. december 2005 - 23:43 #8
nej det gør jeg ikke...

hvornår skal jeg det?
Avatar billede nielsen2002 Nybegynder
26. december 2005 - 23:44 #9
og hvordan
Avatar billede arne_v Ekspert
26. december 2005 - 23:45 #10
den sidste

Dim objCmd As New MySqlCommand(sqlStr, conn)

hvor conn er dit MySqlConnection object
Avatar billede nielsen2002 Nybegynder
26. december 2005 - 23:48 #11
okay, nu har jeg:
Sub Button1_Click(...)
....
...
        Dim objCmd As New MySqlCommand(strSQL, strConn)
        objCmd.Parameters.Add("@UserID", MySqlDbType.Int32)
        objCmd.Parameters("@UserID").Value = ddl.SelectedItem.Text

        objDataAdapter = New MySqlDataAdapter(strSQL, strConn)
        myDataSet = New DataSet()
        objDataAdapter.Fill(myDataSet, "Tabel1")

        GridView1.DataSource = myDataSet.Tables("Tabel1").DefaultView
        GridView1.DataBind()
end sub

Men når jeg klikker på min knap sker der intet
Avatar billede arne_v Ekspert
26. december 2005 - 23:51 #12
øh

conn er et MySqlConnection objekt ikke en string

og jeg kan ikke se hvorfor du blander MySqlCommand med MySqlDataAdapter
Avatar billede nielsen2002 Nybegynder
26. december 2005 - 23:55 #13
Okay.. men så har jeg:

Conn = New MySqlConnection("server=localhost; user id=xxx; password=xxx; database=xxx; pooling=false;")

        strSQL = "SELECT * FROM users WHERE UserID=@UserID ;"
       
        Dim objCmd As New MySqlCommand(strSQL, Conn)
        objCmd.Parameters.Add("@UserID", MySqlDbType.Int32)
        objCmd.Parameters("@UserID").Value = ddl.SelectedItem.Text

Hvordan får jeg så resultatet vist i et gridview?
Avatar billede arne_v Ekspert
27. december 2005 - 00:04 #14
Så skal du bruge MySqlDataAdapter og DataSet
Avatar billede nielsen2002 Nybegynder
27. december 2005 - 00:09 #15
Okay. Så bruger det her, så burde det virke?

Conn = New MySqlConnection("server=localhost; user id=xxx; password=xxx; database=xxx; pooling=false;")

        strSQL = "SELECT * FROM users WHERE UserID=@UserID ;"
     
        Dim objCmd As New MySqlCommand(strSQL, Conn)
        objCmd.Parameters.Add("@UserID", MySqlDbType.Int32)
        objCmd.Parameters("@UserID").Value = ddl.SelectedItem.Text

        objDataAdapter = New MySqlDataAdapter(strSQL, Conn)
        myDataSet = New DataSet()
        objDataAdapter.Fill(myDataSet, "Tabel1")

        GridView1.DataSource = myDataSet.Tables("Tabel1").DefaultView
        GridView1.DataBind()

Eller hvordan?
Avatar billede nielsen2002 Nybegynder
27. december 2005 - 00:16 #16
Har desværre ikke tid til at kigge på det mere i dag. men smid lige at svar Arne_v, du har hjulpet mig meget :D  og jeg ved kke lige hvornår jeg får tid igen.
Avatar billede arne_v Ekspert
27. december 2005 - 23:00 #17
normalt vil man ikke bruge parameters sammen med data adapter

bl.a. fordi man normalt ikke vil have en where betingelse fordi man vil have
alle rækker
Avatar billede arne_v Ekspert
27. december 2005 - 23:00 #18
men et svar anyway
Avatar billede nielsen2002 Nybegynder
28. december 2005 - 10:26 #19
Hvilke andre muligheder er der så?
Avatar billede arne_v Ekspert
28. december 2005 - 23:05 #20
normalt vil man enten:

bruge SqlConnection, SqlCommand og SqlDataReader - her er parametre helt almindelige
og anbefalelsesværdige - du gemmer ændringer med manuelle INSERT/UPDATE og
henter med en SELECT hvor du henter en række ad gangen

bruge SqlConnection, SqlDataAdapter og DataSet - her er brug af parametre ikke
almindelige - du henter data fra DataSet og du gemmer ændringer i dit
DataSet og laver en Update som propagerer ændringerne tilbage i databasen -
normalt vil du kun give den SELECT SQL og så genererer den selv INSERT og UPDATE
SQL
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