我正在使用npgsql的SqlDataAdapter实现将新行从c#数据表对象转移到Postgres数据库。效果很好。
运行命令后,数据库将为列“ ID”生成一个新值,该值应位于DataTable中。为此,我使用了“将值插入到返回中” SQL语句,该语句使我们可以访问在插入过程中填充或修改的列。
要访问这些“返回”值,我添加了带有Direction = Output的其他Parameter对象,并将属性sourceColumn设置为DataTable中的columnName。
虽然这适用于Oracle数据库,但是使用postgress npgsql 4.0.6还是不成功。插入后,这些值将不会显示在数据行中。
这是我代码中的一些片段。
par = new NpgsqlParameter(prefix + name, NpgsqlDbType.Bigint)
{
Direction = ParameterDirection.Output,
SourceColumn = name,
NpgsqlDbType = NpgsqlDbType.Bigint,
DbType = DbType.Int64,
};
dataAdapterUpdateIns.InsertCommand.Parameters.Add(par);
dataAdapterUpdateIns.InsertCommand.UpdatedRowSource = UpdateRowSource.OutputParameters;
用于插入的SQL语句。
INSERT INTO "aimPortQS"."QS"."DataSet_Tbl3" ("Text1", "Datum1", "Guid1", "Guid2") VALUES (@Text1, @Datum1, @Guid1, @Guid2) RETURNING "ID" INTO @ID
有人知道这是在npgsql中实现的吗,还是有一个有关如何设置参数的示例吗?