Avatar billede jaffafo Nybegynder
02. november 2004 - 00:42 Der er 21 kommentarer og
1 løsning

SQL parameter og Datareader

Hvordan?..

Dette var min "gamle" løsning:

DataOleDb.Opendb("blabla")

dim sql as string = "SELECT * from Manager where Email = '" & txtbrugernavn.text & "' and Adgangskode = '" & txtadgangskode.text & "';"
           
DataOledb.Dandata(sql)

If Dataoledb.Data.read()
  'kode her
end if

DataOleDb.Closedb()

men nu bruger jeg sql parametre:

DataOleDb.Opendb("blabla")
           
dim con as oledbconnection = Dataoledb.con("futty")
Dim ins As OleDbCommand = New OleDbCommand ("SELECT * from Manager where Email = @Brugernavn and Adgangskode = @Adgangskode;" , con)
ins.Parameters.Add("@brugernavn", OleDbType.VarChar)
ins.Parameters.Add("@adgangskode", OleDbType.VarChar)
ins.Parameters("@brugernavn").Value = txtbrugernavn.text
ins.Parameters("@adgangskode").Value = txtadgangskode.text

ins.ExecuteNonQuery



og nu kan jeg ikke bruge:  If Dataoledb.Data.read()  mere.. hvordan gør jeg så?
Avatar billede arne_v Ekspert
02. november 2004 - 07:37 #1
Prøv:

dim con as oledbconnection = Dataoledb.con("futty")
Dim sel As OleDbCommand = New OleDbCommand ("SELECT * from Manager where Email = @Brugernavn and Adgangskode = @Adgangskode;" , con)
sel.Parameters.Add("@brugernavn", OleDbType.VarChar)
sel.Parameters.Add("@adgangskode", OleDbType.VarChar)
sel.Parameters("@brugernavn").Value = txtbrugernavn.text
sel.Parameters("@adgangskode").Value = txtadgangskode.text
Dim rdr As OldDBDataReader = sel.ExexcuteReader
Avatar billede arne_v Ekspert
02. november 2004 - 07:37 #2
ExecuteNonQuery for INSERT

ExexcuteReader eller ExexcuteScalar for SELECT
Avatar billede jaffafo Nybegynder
02. november 2004 - 13:04 #3
hej igen..  får denne fejl:


Compiler Error Message: BC30002: Type 'OldDBDataReader' is not defined.

Source Error:



Line 64:             'response.write(con)
Line 65:             'ins.ExecuteNonQuery
Line 66:             Dim rdr As OldDBDataReader = sel.ExexcuteReader
Line 67:
Line 68:        

Jeg har importeret disse namespaces:
Imports System.Data
Imports System.Data.OleDb

hvad mangler der så?
Avatar billede arne_v Ekspert
02. november 2004 - 13:36 #4
det er mig som staver ad h..... til

OleDbDataReader
Avatar billede jaffafo Nybegynder
02. november 2004 - 13:45 #5
lol.. jeg så det hellere ikke :)
Avatar billede jaffafo Nybegynder
02. november 2004 - 13:48 #6
nu får jeg denne fejl:

Compiler Error Message: BC30456: 'ExexcuteReader' is not a member of 'System.Data.OleDb.OleDbCommand'.

Source Error:



Line 64:             'response.write(con)
Line 65:             'ins.ExecuteNonQuery
Line 66:             Dim rdr As OleDbDataReader = sel.ExexcuteReader
Line 67:
Line 68:
Avatar billede arne_v Ekspert
02. november 2004 - 13:59 #7
ditto

ExecuteReader
Avatar billede jaffafo Nybegynder
02. november 2004 - 14:04 #8
Takker..  det fungerer fino nu

smid et svar
Avatar billede arne_v Ekspert
02. november 2004 - 14:07 #9
svar

og undskyld de mange stave fejl
Avatar billede jaffafo Nybegynder
02. november 2004 - 14:39 #10
hej igen:

jeg har lige et lille problem mere:


con = Dataoledb.con("futty")
sel = New OleDbCommand ("UPDATE MANAGER SET antal_login = @nummer where ManagerID = @id;" , con)
sel.Parameters.Add("@id", OleDbType.Integer)
sel.Parameters.Add("@nummer", OleDbType.Integer)
sel.Parameters("@id").Value = id
sel.Parameters("@nummer").Value = nummer
           
sel.ExecuteNonQuery

Dette bliver ikke gemt i db'en. id og nummer indeholder begge data så det er ikke pga det.. hvad kan der være galt.

her er hele metoden:


    Function Antallogin(id as integer)
        dim nummer as integer
        DataOleDb.Opendb("futty")
       
            dim con as oledbconnection = Dataoledb.con("futty")
            Dim sel As OleDbCommand = New OleDbCommand ("SELECT antal_login from Manager where ManagerID = @id;" , con)
            sel.Parameters.Add("@id", OleDbType.Integer)
            sel.Parameters("@id").Value = id
           
            Dim Data As OleDbDataReader = sel.ExecuteReader
                If Data.read()
                    nummer = Data("antal_login")
                    response.write(nummer)
                end if
            Data.Close()
           
            nummer = nummer + 1
                       
            con = Dataoledb.con("futty")
            sel = New OleDbCommand ("UPDATE MANAGER SET antal_login = @nummer where ManagerID = @id;" , con)
            sel.Parameters.Add("@id", OleDbType.Integer)
            sel.Parameters.Add("@nummer", OleDbType.Integer)
            sel.Parameters("@id").Value = id
            sel.Parameters("@nummer").Value = nummer
           
            sel.ExecuteNonQuery
        DataOleDb.Closedb()
    end function
Avatar billede arne_v Ekspert
02. november 2004 - 14:44 #11
Ingen fejl ?

Eksisterer det pågældende ManagerID ?
Avatar billede arne_v Ekspert
02. november 2004 - 14:44 #12
PS: Jeg ville lave en ny OleDbCommand ved navn upd til dn UPDATE. Det gør bare koden
    nemmere at læse.
Avatar billede jaffafo Nybegynder
02. november 2004 - 14:45 #13
ja det eksisterer og der kommer ingen. det bliver simpelthen bare ikke smidt i databasen.
Avatar billede jaffafo Nybegynder
02. november 2004 - 14:46 #14
http://80.167.161.196/futty/

du kan teste selv:

koden bliver kørt når man logger ind:

email: l
pass: l

til venstre kan du se brugerne og der er et tal. Dette er Antal_login i databasen. som du kan se så ændrer det sig ikke
Avatar billede jaffafo Nybegynder
02. november 2004 - 14:47 #15
det skal lige siges at det fungerede fint før jeg skiftede til det parameter så jeg forstå det ikke helt
Avatar billede arne_v Ekspert
02. november 2004 - 19:19 #16
Du må have noget debug ind i koden, så du kan finde ud af hvad der sker.

Bliver den funktion kaldt ?

Sker der nogen exceptions ?

Har id og nummer de værdier de bør have ?

etc.etc.
Avatar billede jaffafo Nybegynder
08. november 2004 - 14:53 #17
hej igen

nu har jeg testet stort set alt og har dobbelttjekket det igen..


dim upd as oledbconnection = Dataoledb.con("futty")
dim sel2 as OleDbCommand = New OleDbCommand ("UPDATE MANAGER SET antal_login = @nummer where ManagerID = @id;" , upd)

sel2.Parameters.Add("@id", OleDbType.Integer)
sel2.Parameters.Add("@nummer", OleDbType.Integer)
sel2.Parameters("@id").Value = id
sel2.Parameters("@nummer").Value = nummer + 1
           
sel2.ExecuteNonQuery

denne koder virker ikke, men den bliver kørt.

men dette fungerer udmærket:

dim sql as string = "UPDATE MANAGER SET antal_login = " & (nummer + 1) & " where ManagerID = " & id & ";"
DataOleDB.SkrivData(sql)       
response.write(sql)


nogen ide om hvad det kan være?
Avatar billede arne_v Ekspert
08. november 2004 - 21:15 #18
Ikke umiddelbart !

Er felterne INTEGER i databasen ?
Avatar billede jaffafo Nybegynder
08. november 2004 - 23:22 #19
Ja har lige tjekket..

ManagerID og Antal_login er integer
Avatar billede jaffafo Nybegynder
12. november 2004 - 00:51 #20
hej igen

nu har jeg tjekket det om igen igen igen..

Når jeg bruger den her metode:

dim sql as string = "UPDATE MANAGER SET antal_login = " & (nummer + 1) & " where ManagerID = " & id & ";"
DataOleDB.SkrivData(sql)       

så virker det 100% alle stedet jeg bruger det.. 

men så snart jeg skifter til:
Avatar billede jaffafo Nybegynder
12. november 2004 - 00:52 #21
Tilføjelse til sidste indlæg:

dim upd as oledbconnection = Dataoledb.con("futty")
dim sel2 as OleDbCommand = New OleDbCommand ("UPDATE MANAGER SET antal_login = @nummer where ManagerID = @id;" , upd)

sel2.Parameters.Add("@id", OleDbType.Integer)
sel2.Parameters.Add("@nummer", OleDbType.Integer)
sel2.Parameters("@id").Value = id
sel2.Parameters("@nummer").Value = nummer + 1
           
sel2.ExecuteNonQuery

så virker det ikke..  dvs den vil ikke gemme i databasen, men alle stedet jeg har en SELECT sql så virker det med SQL parametre fint.. :/

har nogen en mulig løsning til det her..?
Avatar billede jaffafo Nybegynder
19. november 2004 - 16:23 #22
nå..  jeg fik det ikke løst, så jeg lukker bare spørgsmålet da der nok ikke sker mere :(

men takker for hjælpen.. :)
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