17. september 2002 - 23:17Der er
10 kommentarer og 1 løsning
udtræk af database
Jeg har en MySQL database som jeg laver et udtræk fra. Jeg starter med at lave en tabel med denne kode:
'DATABASE CONNECTION Dim objConn as ODBCConnection Dim strConn As String = "conn-str" objConn = New ODBCConnection(strConn)
Dim objDA As New ODBCDataAdapter Dim dvw As DataView Dim ds As New DataSet objDA = New ODBCDataAdapter("select bla bla", objConn) objDA.Fill(ds, "selecter") dvw = ds.Tables("selecter").DefaultView ctrlRepeater.DataSource = dvw ctrlrepeater.DataBind()
Og så selvfølgelig en repeater til at lave tabellen med.
Jeg har lavet det sådan, at man kan trykke på et link i hver række, så man kommer ind på en side, hvor der skal vises nogle flere attributter. (noget lignende på edbpriser.dk, når man har en liste over produkter og trykker på "top ti").
Med til denne side er der en unik attribut (nøgle), så jeg er sikker på, at når jeg laver en select på den, kommer der kun én række retur. Når der kun er én række, synes jeg det virker dumt at lave en repeater for at skrive den ud på skærmen. Desuden skal jeg også bruge attributten i et script, f.eks:
dim NavnSTR as String NavnSTR = (attributten "navn" i databasen)
hvordan trækker jeg bedst disse attributter ud, så jeg kan bruge dem i et script ?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Dim objConn as ODBCConnection Dim strConn As String = "conn-str" objConn = New ODBCConnection(strConn)
Dim objCmd as ODBCCommand objCmd = New ODBCCommand("SELECT Navn FROM MyTable WHERE Id=" + unik_nøgle) Dim NavnSTR as String NavnSTR = CType(objCmd.ExecuteScalar(), String)
Ups.... Connection objektet skal self. åbnes først!
Dim objConn as ODBCConnection Dim strConn As String = "conn-str" objConn = New ODBCConnection(strConn)
Dim objCmd as ODBCCommand objConn.Open objCmd = New ODBCCommand("SELECT Navn FROM MyTable WHERE Id=" + unik_nøgle, objConn) Dim NavnSTR as String NavnSTR = CType(objCmd.ExecuteScalar(), String) objConn.Close
hov, jeg så ikke lige, at du kun havde skrevet "Select navn from table..." - Jeg skal bruge "Select * from table..." Hvordan trækker jeg de enkelte attributter ud ?
Dim objConn as ODBCConnection Dim strConn As String = "conn-str" objConn = New ODBCConnection(strConn)
Dim objCmd as ODBCCommand objConn.Open objCmd = New ODBCCommand("SELECT * FROM MyTable WHERE Id=" + unik_nøgle, objConn) Dim objReader as ODBCDataReader objReader = objCmd.ExecuteReader()
Dim NavnSTR as String NavnSTR = objReader.GetString(0) objConn.Close
Readeren har så tilsvarende metoder for de andre datatyper, hvis felt 2 f.eks. er et heltal så kan du sige:
Dim i as integer i = objReader.GetInt32(1) 'Husk at collections er 0 indekserede, så felt 2 har indeks 1
hmm, den bliver ved med at lave samme fejl hele tiden:
System.InvalidOperationException: No data exists for the row/column.
Fejlmeddelelsen kunne tyde på, at select-dimsen ikke returnerer noget som helst, men jeg har prøvet at lave et response.write() på select-strengen, og den ser ok ud:
SELECT * FROM andre WHERE varenr=1 Og ja, der findes en instans med varenr=1.
Forresten hvad med typen double ? Er det bare: objReader.GetDouble(0) ?
Jeg går ud fra at du anvender MySQL som DB da du ellers ville anvende Sql klasser eller OleDb klasser, så her er en glimrende artikel om MySQL DB tilgang fra .Net:
Og ja... Den hedder GetDouble, men med ODBC.Net følger en glimrende dokumentation, hvis du har lavet en std. install er den sikkert i c:\programmer\microsoft.net\odbc.net ellers kan du hente hele pakken her: http://www.microsoft.com/downloads/release.asp?ReleaseID=35715
Nu har jeg læst en h... masse, og endelig fundet ud af, hvad der var galt. Jeg manglede bare linien:
objReader.Read()
Nå, men tak for hjælpen, du får alle pointene alligevel, da jeg sikkert ikke havde fundet ud af det, hvis du ikke havde guidet mig ind på det rette spor :-)
He-he.... Det må du sku' undskylde jeg glemte :-) Nogle gange overser man bare ting..... Men tak for point :-)
Synes godt om
Ny brugerNybegynder
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.