c# - Npgsql:INSERT 命令不插入

标签 c# .net database c#-3.0 npgsql

问题:

NpgsqlCommand.Text: INSERT INTO mytable (id, name) VALUES (:id, :name)
参数一:name=id,value=42
参数2:name=name,value="whatever"

command.ExecuteScalar() 没有失败,但是没有新行。也没有重复的 ID。

代码:

using (var command = connection.CreateCommand()) {
    command.Transaction = transaction;
    command.CommandText = "INSERT INTO mytable (id, name) VALUES (:id, :name)";       

    var idParameter = command.CreateParameter();
    idParameter.Direction = ParameterDirection.Input;
    idParameter.DbType = DbType.Int32;
    idParameter.ParameterName = "id";
    idParameter.Value = 42;
    command.Parameters.Add( idParameter );

    var nameParameter = command.CreateParameter();
    nameParameter.Direction = ParameterDirection.Input;
    nameParameter.DbType = DbType.String;
    nameParameter.ParameterName = "name";
    nameParameter.Value = "whatever";
    command.Parameters.Add( nameParameter );

    command.ExecuteScalar();
}

上面的代码不是真正的代码。我必须从几个 DAL 类中收集它以将其线性化...
事务当然是在这段代码之前创建的,并在之后提交。

表定义:

CREATE TABLE mytable
(
    "name" character varying NOT NULL,
    id integer NOT NULL,
    CONSTRAINT mytable_pkey PRIMARY KEY (id)
)
WITH (
    OIDS=FALSE
);
ALTER TABLE mytable OWNER TO myuser;

问题:

  • 胡?
  • 为什么?
  • 我做错了什么?

结果:

始终检查您的事务是否已提交,并仔细检查 Commit() 是否未被注释掉...

最佳答案

尝试使用

command.ExecuteNonQuery();

代替 command.ExecuteScalar()

关于c# - Npgsql:INSERT 命令不插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3132669/

相关文章:

c# - xml文档,转义这个字符

database - Yugabyte YSQL中的语句启用

c# - 如何按字母顺序对数据网格中的列标题进行排序? C#

c# - 日期不会去Mysql数据库c#

c# - 删除 c# 二进制文件中未使用的预处理器符号

.net - WPF 按钮样式触发器

.net - .NET WebClient 抓取文本是否错误?

c# - 在 asp.net 中使用文本框自动回发

mysql唯一索引EXCEPT为空或null

mysql - sqlquery 不工作给出错误