Genemløb af Data Reader (VB)

Tags:    asp.net

hejsa..
Jeg er ved at lave en methode som skal kunne løbe datareaderen igennem, og udskrive alt indholdet. Derfor skal den også selv finde ud af hvor mange colonner der er og bare køre der ud af. Jeg har lavet følgende, men den giver mig sku problemer:

try
dtrMedlemmer = cmdSelectMedlemmer.ExecuteReader()
if dtrMedlemmer.hasRows then
strOutput &= "1"
'Der blev fundet noget i data-reader
while dtrMedlemmer.Read()
strOutput &= "2"
count = 0
repeat = true
while (repeat = true)
strOutput &= "3"
if dtrMedlemmer(cint(count)) <> "" then
strOutput &= "4"
else
repeat = false
end if
count += 1
end while
end while
else
strOutPut &= "Der var intet"
end if

dtrMedlemmer.close()
catch
strOutput &= "FEJL I SQL STRENGEN"

finally
conMedlemmer.Close()
strOutput &= vbCrLf & "----------------------------------------------"
tboOutput.text = strOutput & tboOutput.text
end try

Den er self ikke færdig eller noget men kan vise mie tanker..

Det er primært den her:
if dtrMedlemmer(cint(count)) <> "" then
som giver problemer.. Kan man ikke køre colonnerne igennem således..?

Mvh. Kasper



2 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
hejsa..
Jeg er ved at lave en methode som skal kunne løbe datareaderen igennem, og udskrive alt indholdet. Derfor skal den også selv finde ud af hvor mange colonner der er og bare køre der ud af. Jeg har lavet følgende, men den giver mig sku problemer:

Hej der

Det ser lidt forvirende ud! men, da du nævner en SQL streng går jeg ud fra at det db tabel du vil eksaminere

jeg antager at du bruger et eller andet listwiew/listbox/eller noget andet således at du har en oversigt af tabellerne i databasen noget ala Con.OpenSchema og når du så klikker/vælger en tabel så skal den analyseres for antallet af
rows og colums.
Det fremgår ikke ret tydeligt hvorledes data'ene skal vises
labels/msg box ???

dtrMedlemmer = cmdSelectMedlemmer.ExecuteReader()
if dtrMedlemmer.hasRows then
strOutput &= "1"

her ville jeg nok lave noget ala

dim x as integer
dim i as integer
dim y as string

y = Con.OpenSchema.text
x= 0
i= 0

con.execute" select * " & y &" "
'vælg alt i tabellen "dtrMedlemmer"

x= rst.recordcount ' tæl antallet af rækker

if rst.recordcount >0 then msgbox,"
Der blev fundet "& x & " poster/rækker i data-readeren"
else msgbox," 'Data-readeren fandt ingenting"

if rst.recordcount =0 then exit sub

du kan selvfølgelig og bruge text/labels til repræsentere dataene
på en form eller et grid

'Der blev fundet noget i data-reader
while dtrMedlemmer.Read()
strOutput &= "2"
count = 0
repeat = true
while (repeat = true)
strOutput &= "3"
if dtrMedlemmer(cint(count)) <> "" then
strOutput &= "4"
'og noget ala det her

for i = i to ColumnCount
msgbox," Data-readeren fandt " & i & " kolonner

else
repeat = false
end if
count += 1
end while
end while
else
strOutPut &= "Der var intet"
end if

dtrMedlemmer.close()
catch
strOutput &= "FEJL I SQL STRENGEN"

finally
conMedlemmer.Close()
strOutput &= vbCrLf & "----------------------------------------------"
tboOutput.text = strOutput & tboOutput.text
end try

og hvis du kommer forbi recordcount= 0 dvs >0
then print button visible =true
print_out y 'eller noget i den retning

som sagt det er også kun et skud fra hoften ,håber der var et par
brugelige input

mvh Jens




hejsa..
Jeg er ved at lave en methode som skal kunne løbe datareaderen igennem, og udskrive alt indholdet. Derfor skal den også selv finde ud af hvor mange colonner der er og bare køre der ud af.


Yo!

Jeg skrev lige et lille eksempel som du måske kan bruge. Erstat mit SQL udtryk og connection string med dine egne værdier - og dette lille kommandolinie program vil løbe resultatet igennem og skrive lidt info ud om kolonnerne og deres værdi.

Imports System.Data
Imports System.Data.SqlClient

Module Module1

Sub Main()

Dim sCmd As String = "select * from event"

Dim cn As New SqlConnection
Dim cmd As New SqlCommand
Dim rdr As SqlDataReader

Try

cn.ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;database=cool;server=.;Connect Timeout=30"
cn.Open()

Try

cmd.Connection = cn
cmd.CommandText = "select * from event"
cmd.CommandType = CommandType.Text

rdr = cmd.ExecuteReader

Try

While rdr.Read()

For i As Integer = 0 To rdr.FieldCount - 1

Console.WriteLine(rdr.GetName(i))
Console.WriteLine(rdr.GetDataTypeName(i))
Console.WriteLine(rdr.GetValue(i))

Next

End While

Catch ex As Exception
Console.WriteLine(String.Format("Fejl: Kan ikke læse rigtigt = {0}", ex.ToString))
End Try

Catch ex As Exception
Console.WriteLine(String.Format("Fejl: Kan ikke eksekvere udtryk = {0}", ex.ToString))
Finally
rdr.Close()
End Try

Catch ex As Exception
Console.WriteLine(String.Format("Fejl: Kan ikke åbne forbindelse til database = {0}", ex.ToString))
Finally
cn.Close()
End Try

End Sub

End Module

Håber det kan bruges til inspiration,
Erik :-)



t