20. marts 2006 - 12:49Der er
18 kommentarer og 1 løsning
OleDbDataReader problem
Jeg er gammel asp mand og er kommet igang med at rode med appliktationsudvikling i .NET. Jeg sidder og skal have lavet en forholdsvis simpel opgave (i classic asp ihvertfald). Jeg skal have oprettet forbindelse til en Access database, tjekke om der er en post, der har afsendstatus 2 for så herefter at hive ID'et ud. F.eks. i asp:
conn = Min connection string SQL = "select id, afsendstatus from nyhedstabel where id = '2'" set rs = conn.execute(SQL)
If rs.eof then
SelectSQL = "select * from indhold where id = " & rs("id") set selectrs = conn.execute(SelectSQL)
'Kode, der udfører en masse ting med indholdet.
End If
Jeg havde forestillet mig, at jeg hev det ud i en OleDbDataReader og herefter kunne benytte mine data som jeg ville, men kan slet ikke få det til at fungere.
<%@ Import Namespace="System.Data.OleDb" %> <table border="1"> <tr> <th>F1</th> <th>F2</th> </tr> <% Dim con As OleDbConnection = New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database\MSAccess\Test.mdb;User Id=admin;Password=") con.Open Dim sel As OleDbCommand = New OleDbCommand ("SELECT * FROM T1", con) Dim rdr As OleDbDataReader = sel.ExecuteReader While rdr.Read %> <tr> <td><%=rdr(0)%></td> <td><%=rdr(1)%></td> </tr> <% End While rdr.Close con.Close %> </table>
Det ser jo lækkert ud:-) Er det slet ikke muligt at benytte f.eks. rs("id") ligesom i gamle dage? Er man nødt til at bruge placering i databasen i stedet for record navnet?
Nu ved jeg ikke om det er det her du gør. Men hvis du bare skal have den første item ud bruger man Dim conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=z:\emdb\Newsmail\Newsmail_bu.mdb;") conn.Open()
Dim sel As OleDbCommand = New OleDbCommand("SELECT * FROM Nyhedsmail", conn) Dim rdr As OleDbDataReader = sel.ExecuteReader
'Hvis ikke databasen er tom, så udskriv det første ID If rdr.HasRows = True Then //læs første linie rdr.Read(); lblResultat.Text = rdr(0).ToString()
En repeater kan se ud på denne simple måde (i asp.net 2.0): <asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <asp:Label ID="lbl1" runat="server" Text="<%#Eval("id") %>"></asp:Label> </ItemTemplate> </asp:Repeater>
I f.eks. page_load Henter du så data og får vist alle id'er med Repeater1.DataSource = rdr; Repeater1.DataBind();
men studer ASP.NET web controller lidt - det er en god investering !
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.