21. marts 2005 - 15:11Der er
22 kommentarer og 1 løsning
Antal records i et recordset
Jeg har været lidt rundt i de øvrige spørgsmål og svar om en måde at tælle anatal records i et recordset, men er stadig ikke sikker på, hvordan man gør det. Jeg har følgende kode:
SQLTekst = New OleDbCommand(strSQL, objConn ) Dim rs As OleDbDataReader = SQLtekst.ExecuteReader() rs.Read()
og så er det, at jeg gerne vil aflæse antal linier (eller nul for ingen records). Er det slet ikke muligt på en nem måde? Det må da være noget, mange har brug for.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
SqlConnection con = new SqlConnection("..."); SqlCommand selectCommand = new SqlCommand("select * from sometable", con); SqlDataAdapter adapter = new SqlDataAdapter(selectCommand); DataSet ds = new DataSet(); adapter.Fill(ds);
hvis du vil kende antallet inden du henter din data med en reader kommer du nok til at lave en : "select count(id) from tblsomething" og så lave en .ExecuteScalar() på en sådan kommando.
Tak for de mange gode råd! Kan man overføre rs til en funktion og så få den til at returnere antal records efter at have spolet dem igennem i funktionen? Dette ville ligne den gode gamle .RecordCount.
måske kunne du endda bruge metode til at returnere readeren, og så have en output-parameter hvor antallet kan angive.
så kunne du have noget i denne stil : int antal = 0; OleDbDataReaer reader = GetReader(out antal);
hvis du så sørger for at gøre det som foreslået 15:19:54 eller 15:21:32 ville du efter at have kaldt metoden stå med en reader klar til brug + antallet af records du ville kunne forvente at suge op.
altså sådan noget i denne stil (bare sådan lidt pseudoagtigt) :
private OleDbDataReader GetReader(out recordCount) { // ... reader til at tælle med, hvis du bruger den fra 15:19:54 recordCount = (int)countCommand.ExecuteScalar();
// ... og så den reader du bruger til at gufle data op med. return theRealReader; }
Så har du begge dele til rådighed der hvor du bruger readeren. (som skrevet før :) int antal = 0; OleDbDataReaer reader = GetReader(out antal);
Nu fik jeg det endelig til at virke - jeg bruger dette:
Dim objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.mappath("/DbTest.mdb") & ";") objConn.Open() Dim selectCommand As New OleDbCommand("Select * from tblTable1", objConn) Dim adapter As New OleDbDataAdapter(selectCommand) Dim ds As New DataSet() adapter.Fill(ds)
Dim numberOfRows As Integer = ds.Tables(0).Rows.Count
Tak!
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.