问题:
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/