2012-03-26 18 views
4

Ich möchte die zuletzt eingefügte ID erhalten, wenn sie in mein visuelles C# -Programm eingefügt wird.Holen Sie sich die zuletzt eingefügte ID-Rückgabe von einer Einfüge-/Aktualisierungsabfrage

// Insert to database 
try 
{ 

    int result = int.Parse(tblClipManagerTableAdapter.InsertQuery(textBox2.Text, textBox1.Text).ToString()); 
    MessageBox.Show(result.ToString()); 
} 
catch (Exception ex) { 
    MessageBox.Show("Fejl: " + ex.Message.ToString()); 
} 

Fehler ist: "Objektreferenz nicht auf eine Instanz eines Objekts festgelegt."

Ich habe den tblClipManagerTableAdapter.InsertQuery-Ausführungsmodus auf Skalar gesetzt.

Gibt es Hilfe bei der Rückgabe der zuletzt eingefügten ID mit meinem aktuellen Code und Setup?

Verwenden einer lokalen SQL-Datenbank (dbClipManager.sdf).

Mit freundlichen Grüßen


EDIT

Ich glaube, ich etwas gefunden, das ich verwenden könnte.

Aber ich bin sehr neu dazu. Nicht sicher, wie man den Code schreibt? Im verwendet, um nur die Datasets zu verwenden, keine Verbindungen zu öffnen, führen Sie SQL-Befehle aus. o/

http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/1d1d3267-dc29-470b-bb20-00487a39bc87/

Mit freundlichen Grüßen

Antwort

4

Es gibt mehrere Probleme mit Ihrem Ansatz, also würde ich vorschlagen, dass Sie durch von table adapter and make sure that you've got the basics down eine schnelle Lese tun.

  1. Wenn Sie versuchen, einen neuen Datensatz hinzufügen, sollten Sie TableAdapter.Insert anrufen, nicht TableAdapter.Update
  2. Sie können keinen zweiten Befehl an die Datenbank erstellen und @@IDENTITY verwenden, um die ID zurück zu bekommen, die vorher war generiert ... muss innerhalb derselben Sitzung zurückgegeben werden, sonst hätte SQL keine Ahnung, welche ID Sie erwarten.
  3. Wenn Sie den Ausführungsmodus des Tabellenadapters auf skalar festlegen, ist die ID der Rückgabewert des Methodenaufrufs. Please see this Question and Answer on the same issue that you're experiencing.

EDIT: Please see this walk-through for what you're trying to accomplish.

+1

auch in SQL Server 2000 sollten Sie nicht @@ Identität nutzen. – HLGEM

+1

@HLGEM Sie haben recht ... danke. Aus irgendeinem Grund dachte ich "SCOPE_IDENITY()" wurde 2005 hinzugefügt, aber es wurde im Jahr 2000 hinzugefügt. Ich denke, ich verbrachte mehr Zeit in 7.0, als ich mich erinnern möchte. –

+0

@MichaelFredrickson vielen Dank für Ihre schnelle Antwort. Entschuldigung für die Nichtübereinstimmung von UPDATE/INSERT. Ich habe meine Frage bearbeitet. Ich habe jetzt den Ausführungsmodus des Tableadapters (tblClipManagerTableAdapter.InsertQuery) auf Skalar gesetzt. Immer noch der gleiche Fehler in meinem Versuch/Catch. Wohin mit der SCOPE_IDENTITY()? – user1281991

Verwandte Themen