18. november 2004 - 12:56
Der er
8 kommentarer og 1 løsning
Fill dataset hvis der er noget at læse
Min kode ser sådan ud: minConnection.Open(); minSqlDataReader = minCommand.ExecuteReader(); DataSet ds = new DataSet(); while (minSqlDataReader.Read()) { minSqlDataAdapter.SelectCommand = minCommand; } minSqlDataReader.Close(); minConnection.Close(); minSqlDataAdapter.Fill(ds); return ds; Problemet opstår hvis der ikke er noget at læse, altså at sql-sætningen ikke returnerer nogle poster. Hvordan kan jeg få minSqlDataAdapter.Fill(ds) til at eksekvere kun hvis der er nogle poster?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
18. november 2004 - 13:11
#1
umiddelbart ved at teste på: ds.Tables("mintabel").Rows.Count > 0
18. november 2004 - 13:25
#2
nej, for min sql-sætning er et join mellem flere tabeller, hvor der i hver enkelt altid vil være værdier. Desuden skal jeg først fylde datasettet hvis testen er sand.
18. november 2004 - 13:35
#3
Jow - if minSqlDataReader.hasrows = true then
18. november 2004 - 13:51
#4
det kan jeg jo ikke, da jeg skal fylde datasettet etter at connection er closed, og jeg ikke kan læse med datareader når den er lukket.
18. november 2004 - 13:57
#5
har du prøvet således: ? minConnection.Open(); minSqlDataReader = minCommand.ExecuteReader(); if minSqlDataReader.Hasrows = True { DataSet ds = new DataSet(); while (minSqlDataReader.Read()) { minSqlDataAdapter.SelectCommand = minCommand; } minSqlDataReader.Close(); minConnection.Close(); minSqlDataAdapter.Fill(ds); return ds; } else { Response.write "HEST - no data!"; } BTW: om min C# syntax er OK er ikke sikkert da jeg kun koder VB.NET!
18. november 2004 - 14:06
#6
Gør jeg sådan, funderer det: minConnection.Open(); minSqlDataReader = minCommand.ExecuteReader(); DataSet ds = new DataSet(); if (minSqlDataReader.HasRows == true) { while (minSqlDataReader.Read()) { minSqlDataAdapter.SelectCommand = minCommand; } minSqlDataReader.Close(); minConnection.Close(); minSqlDataAdapter.Fill(ds); return ds; } else { minSqlDataReader.Close(); minConnection.Close(); minSqlDataAdapter.Fill(ds); return ds; } Et par små syntaktiske ting, ellers er det ok. Tak!
18. november 2004 - 14:08
#7
PS: Hvorfor indkaplser du egentlig ikke din dbconnection i en try, catch, finally block?
18. november 2004 - 15:26
#8
det ville nok være en god ide...
22. november 2004 - 21:15
#9
er den her kode ikke lidt... ja, underlig... unødvendig while (minSqlDataReader.Read()) { minSqlDataAdapter.SelectCommand = minCommand; } du tildelder vel den samme command x antal gange = spild af tid jeg ville gøre det sådan her istedet: minConnection.Open(); minSqlDataReader = minCommand.ExecuteReader(); DataSet ds = new DataSet(); if (minSqlDataReader.Read()) { minSqlDataAdapter.SelectCommand = minCommand; minSqlDataReader.Close(); minConnection.Close(); minSqlDataAdapter.Fill(ds); return ds; } else { minSqlDataReader.Close(); minConnection.Close(); minSqlDataAdapter.Fill(ds); return ds; } Eller endnu bedre: drop readeren DataSet ds = new DataSet(); minSqlDataAdapter.Fill(ds); if (ds.Rows.Count > 0) { minSqlDataAdapter.SelectCommand = minCommand; } return ds;
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.