VisualStudio C table.select Endlosschleife
Hallo zusammen,
habe ein kleines Problem den größten Wert in einer Tabelle zu finden.
VisualStudio 2019 C#
DataRow o = this.meinDataSet_bestellung.hbtab.Select("bnr = max(bnr)");
Diese select Anweisung läuft in eine Endlosschleife bei maximaler Prozessspeicherauslastung.
Starte ich select ohne Parameter, werden innerhalb von einer Sekunde alle 50.000 Datensätze angezeigt.
Was mach ich falsch ?
Danke.
habe ein kleines Problem den größten Wert in einer Tabelle zu finden.
VisualStudio 2019 C#
DataRow o = this.meinDataSet_bestellung.hbtab.Select("bnr = max(bnr)");
Diese select Anweisung läuft in eine Endlosschleife bei maximaler Prozessspeicherauslastung.
Starte ich select ohne Parameter, werden innerhalb von einer Sekunde alle 50.000 Datensätze angezeigt.
Was mach ich falsch ?
Danke.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 666678
Url: https://administrator.de/contentid/666678
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
12 Kommentare
Neuester Kommentar
string strDBPath = @"D:\test.accdb";
System.Data.OleDb.OleDbConnection conn = new OleDbConnection(string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source = {0}", strDBPath));
conn.Open();
System.Data.OleDb.OleDbCommand cmd = new OleDbCommand("SELECT MAX(bnr) FROM Kundendaten", conn);
OleDbDataReader reader = cmd.ExecuteReader();
reader.Read();
// wenn anderer Datentyp hier anpassen z.B. GetString(0)
int max = reader.GetInt32(0);
MessageBox.Show(max.ToString());
conn.Close();
Oder auch mittels DataAdapter und DataTable
string strDBPath = @"D:\test.accdb";
System.Data.OleDb.OleDbConnection conn = new OleDbConnection(string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source = {0}", strDBPath));
conn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT MAX(bnr) FROM Kundendaten", conn);
DataTable dt = new DataTable();
adapter.Fill(dt);
MessageBox.Show(dt.Rows.ToString());
conn.Close();
Gruß w.
habe ein kleines Problem den größten Wert in einer Tabelle zu finden.
VisualStudio 2019 C#
VisualStudio 2019 C#
Ich würde so etwas machen:
const string strConn = @"Provider=Microsoft.ACE.OLEDB.16.0;Data Source=TestDatabase.accdb;Persist Security Info=False;";
const string strSQL = @"SELECT MAX(Wert) FROM TestTable";
using (OleDbConnection cn = new OleDbConnection(strConn))
{
using (OleDbCommand cmd = new OleDbCommand(strSQL, cn))
{
object returnValue;
cn.Open();
returnValue = cmd.ExecuteScalar();
if (returnValue != null && returnValue != DBNull.Value)
{
}
else
{
}
cn.Close();
}
}
also kann ich nicht das vorhandene Dadaset + Adapter verwenden.
Sicher kann man, aber warum sollte man hier ein Disconnected Dataset verwenden?
SqlConnection rs = new SqlConnection("Server=192.168.0.1;Database=mydv;User ID=dbuser;Password=1234");
Warum keine Trusted Connection?
string sSQL = "select max(bnr) as maxbnr from orders";
SqlCommand cmd = new SqlCommand(sSQL, rs);
SqlDataAdapter ma = new SqlDataAdapter(cmd);
SqlCommand cmd = new SqlCommand(sSQL, rs);
SqlDataAdapter ma = new SqlDataAdapter(cmd);
Warum DataAdapter?
DataSet ds = new DataSet();
ma.Fill(ds,"orders");
ma.Fill(ds,"orders");
Warum ein DataSet?
Console.WriteLine(ds.Tables["orders"].Rows["maxbnr"].ToString());
oder habe ich hier Kraut&Rüben programmiert ;) )
Dafür das du nur einen einzigen Wert willst seeeehr viel Overhead für Kraut und Rüben 😁.Das ganze muss ich dann nur noch umschreiben auf einen SQL Server.
Ich hatte das auf Access geschrieben weil deine letzte Frage auf ne Access DB abzielte, aber dank Connection String ist das ja beliebig umstellbar.
Hat @mbehrens oben schon Code für gepostet.
"Warum" nicht ?
Ich habe das so im internet gefunden, auf der Suche nach meinem Problem, freue mich über jeden Hinweis über eine Vereinfachung oder einen link dorthin ;)
Ich habe das so im internet gefunden, auf der Suche nach meinem Problem, freue mich über jeden Hinweis über eine Vereinfachung oder einen link dorthin ;)
Ah ja. Typisches Copy And Paste Programming.