c# - 使用 ExecuteScalar 插入时使用 Npgsql 检索序列号

标签 c# .net npgsql

我正在尝试将一行插入到具有串行主键的 PostgreSQL 表中,我需要在插入后检索该列。我得到了这样的东西:

“pais”表有 3 列:id、pais、capital; id 是一个序列列,是它的主键。

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);

它在表中插入行,但“res”值为空。如果我使用 nexval('table_sequence') 插入也返回 null。

知道如何返回表的 ID 吗?我错过了什么吗?

提前致谢

最佳答案

那个线程安全吗?
如果在插入和选择之间发生另一个插入怎么办? 为什么不使用:

INSERT INTO table (fieldnames) VALUES (values) RETURNING idcolumn?

关于c# - 使用 ExecuteScalar 插入时使用 Npgsql 检索序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5583517/

相关文章:

c# - 显示隐藏表格

c# - 从访问站点的任何用户接收有关托管域电子邮件 ID 的电子邮件

c# - 强制 float 在 .NET 中是确定性的?

.net - 在安装新的 .net 框架之前安装以前的 .net 框架吗?

orm - 如何使用 Npgsql 和 OrmLite 定义 'geography' 类型(使用 postgresql、postgis、c#)

postgresql - Npgsql.PostgresException (0x80004005) : XX000: cache lookup failed for type 207852 when schema dropped

c# - 为方法分配结果值是否比再次调用该方法更快?

c# - 只允许设置来自特定类/实例的属性

c# - 使用 StorageLibrary 来监听文件更改 UWP

postgresql - 嵌套查询作为 PostGIS 函数参数