none
Mit C# INT Wert aus SQL Datenbank auslesen und in einer Variable zur Weiterverwendung ablegen RRS feed

  • 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

    Dienstag, 16. Dezember 2014 19:52

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


    Dienstag, 16. Dezember 2014 20:39
    Moderator

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


    Dienstag, 16. Dezember 2014 20:39
    Moderator
  • 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

    Dienstag, 16. Dezember 2014 21:36