Derzeit arbeite ich an der Erstellung einer Möglichkeit für ASP.NET C# -Web-app, die höchste Zahl in einer Spalte in SQL-Datenbank abzurufen. Im Moment schaffe ich die folgende Codezeile.Finden Sie die höchste Zahl in der SQL-Datenbank, wenn nicht verfügbar return '0'
commTagNo = new SqlCommand("SELECT MAX(ComponentTagEntry) FROM dbo.HullDataSheet", connHull);
connHull.Open();
int newTagNo = (int)commTagNo.ExecuteScalar();
connHull.Close();
newTagNo = newTagNo + 1;
wo die connHull
SqlConnection
für obige Zeile von Codes ist.
Der obige Code kann die höchste Nummer in der Spalte ComponentTagEntry
nur dann abrufen, wenn die Datenbank bereits mindestens eine Datenzeile enthält.
Wenn die Datenbank leer ist, gibt sie 'Specified cast is invalid' zurück, da keine Daten zu finden sind. .ExecuteScalar()
.
Was ich brauche, ist, wenn die Datenbank leer ist, dass der Code die höchste Nummer als '0' abruft.
Ich weiß, dass ich den obigen Code mit If dann Anweisung ändern muss, aber ich weiß nicht den Wert, den ich mit der True/False-Anweisung vergleichen muss.
Jede Hilfe wird sehr geschätzt.
Darf ich vorschlagen, dass Sie eine Identitätsspalte für den ‚Tag Numbers‘ anstelle dieser Logik verwenden? Es ist möglich, wenn mehrere gleichzeitige Benutzer vorhanden sind, dass eine doppelte ID generiert werden könnte (Race-Bedingung) –
'ComponentTagEntry' ist meine Identity-Spalte in der Tabelle, in der Identity-Inkrement 1 und Identity-Seed ist 1. In diesem Projekt muss die Datenbank in Tabellenform anzeigen. daher kann ich den Identity-Seed nicht auf 0 setzen. – Fahmieyz
Nicht sicher, ob es empfehlenswert ist oder nicht, aber funktioniert es, wenn Sie ein nullable int 'int?' verwenden? – HoneyBadger