Benutzer mit den meisten Antworten
Mit C# INT Wert aus SQL Datenbank auslesen und in einer Variable zur Weiterverwendung ablegen

Frage
-
Hallo zusammen,
ich bin relativ NEU in der C# "Datenbankprogrammierung"!
Mein Anliegen lautet genau:
Ich möchte aus einer SQL Datenbank (Verbindung steht) einen INT Wert auslesen und in einer Variable ablegen, sodass er in C# weiterverwendet werden kann.
Genauer gesagt ich möchte den größten Wert einer Spalte (Name: ID) auslesen.
Leider komme ich seit mehreren Tagen nicht weiter und wende mich daher an euch.
Die Daten werden über den folgenden Code in die DB geschrieben, was auch funktioniert.
Code:
KundendatenDataSetTableAdapters.
KundendatenTableAdaptertableAdapter = newKundendatenDataSetTableAdapters.KundendatenTableAdapter();
tableAdapter.Werte_einfügen(@ID1, @Anrede1,@Name1,@Vorname1,@Straße1,@hausnummer1,@postleitzahl1,@ort1);
Hinter dem Adapter "Werte_einfügen" steckt ein Insert Befehl.
Ich würde mich über jede Antwort freuen die mich in Sachen auslesen der Werte aus der Datenbank weiterbringt.
Mit freundlichen Grüßen
M_techniker
Antworten
-
Hi,
ich würde das über ein SqlCommand und dort mit ExecuteScalar machen.
String sql = "SELECT ISNULL( MAX( ID ), 0 ) FROM Tabelle"; SqlCommand cmd = new SqlCommand( sql, <Connection> ); Int64 maxIdValue; Int64.TryParse( cmd.ExecuteScalar().ToString(), maxIdValue );
Danach steht dir in maxIdValue der entsprechende Wert zur Verfügung.
Falls dein ID Spalte in der Tabelle eine IDENTITY Spalte ist, ihren Wert also selbst erzeugt, solltest Du das nicht so machen, da Du dann u.U. einen falschen Wert erhältst (bspw. weil zwischen deinem INSERT und dem SELECT der ID noch anderweitig ein neuer Datensatz eingefügt wurde).
Falls Du also eine IDENTITY Spalte verwendest, schau mal hier:
http://blog.jamzarwebdesign.com.au/?p=37
Allerdings solltest Du entgegen der dortigen Angabe nicht @@IDENTITY, sondern SCOPE_IDENTITY() (inkl. der Klammern und ohne @ am Anfang) verwenden.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Dienstag, 16. Dezember 2014 20:46
- Als Antwort vorgeschlagen Aleksander Chalabashiev Montag, 22. Dezember 2014 16:36
- Als Antwort markiert Aleksander Chalabashiev Montag, 29. Dezember 2014 13:10
Alle Antworten
-
Hi,
ich würde das über ein SqlCommand und dort mit ExecuteScalar machen.
String sql = "SELECT ISNULL( MAX( ID ), 0 ) FROM Tabelle"; SqlCommand cmd = new SqlCommand( sql, <Connection> ); Int64 maxIdValue; Int64.TryParse( cmd.ExecuteScalar().ToString(), maxIdValue );
Danach steht dir in maxIdValue der entsprechende Wert zur Verfügung.
Falls dein ID Spalte in der Tabelle eine IDENTITY Spalte ist, ihren Wert also selbst erzeugt, solltest Du das nicht so machen, da Du dann u.U. einen falschen Wert erhältst (bspw. weil zwischen deinem INSERT und dem SELECT der ID noch anderweitig ein neuer Datensatz eingefügt wurde).
Falls Du also eine IDENTITY Spalte verwendest, schau mal hier:
http://blog.jamzarwebdesign.com.au/?p=37
Allerdings solltest Du entgegen der dortigen Angabe nicht @@IDENTITY, sondern SCOPE_IDENTITY() (inkl. der Klammern und ohne @ am Anfang) verwenden.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Dienstag, 16. Dezember 2014 20:46
- Als Antwort vorgeschlagen Aleksander Chalabashiev Montag, 22. Dezember 2014 16:36
- Als Antwort markiert Aleksander Chalabashiev Montag, 29. Dezember 2014 13:10
-
Hi Stefan,
danke für die hilfreiche Antwort.
In der Tat handelt es sich um eine IDENTITY Spalte, habe ich vergessen zu erwähnen.
Könntest du mir mit obigem Link etwas ausführlicher auf die Sprünge helfen. Da ich wie bereits erwähnt leider noch keine Erfahrung damit habe.
Könntest du mir kurz aufführen, wie der Code dann aussehen sollte?
Gruß M_Techniker