Abrufen der Seriennummer ID mit Npgsql beim einfügen mit ExecuteScalar

Ich versuche, einfügen einer Zeile in eine PostgreSQL-Tabelle mit einer serial primary key, und ich brauche zum abrufen dieser Spalte, nachdem es eingefügt wurde. Ich habe so etwas wie dieses:

Den Tisch "pais" hat 3 Spalten: id, pais, Hauptstadt; id ist eine serial-Spalte und ist Primärschlüssel.

NpgsqlCommand query = new NpgsqlCommand("insert into pais(nombre, capital) values(@nombre, @capital)", conn);
query.Parameters.Add(new NpgsqlParameter("nombre", NpgsqlDbType.Varchar));
query.Parameters.Add(new NpgsqlParameter("capital", NpgsqlDbType.Varchar));
query.Prepare();
query.Parameters[0].Value = this.textBox1.Text;
query.Parameters[1].Value = this.textBox2.Text;
Object res = query.ExecuteScalar();
Console.WriteLine(res);

Es fügt die Zeile auf den Tisch, aber "res" - Wert null ist. Wenn ich das einfügen mit der nexval('table_sequence') auch den Wert null zurück.

Jede Idee, wie kann ich wieder die id von der Tabelle? Bin ich etwas fehlt?

Vielen Dank im Voraus

Ich glaube nicht, Lesen Sie Ihre Abfrage wie "die Auswahl" beliebige Wert, der zurückgegeben wird als Skalare?

InformationsquelleAutor Cheluis | 2011-04-07

Schreibe einen Kommentar