NpgsqlCommand.Text:INSERT INTO mytable(id,name)VALUES(:id,:name)
参数1: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()...
答案 0 :(得分:2)
尝试使用
command.ExecuteNonQuery();
而不是command.ExecuteScalar()
答案 1 :(得分:1)
因为您正在使用交易
,所以不要忘记提交