gpt4 book ai didi

c# - ":"处或附近的 Npgsql 语法错误

转载 作者:行者123 更新时间:2023-11-29 12:34:16 25 4
gpt4 key购买 nike

这几天我一直在研究这个问题,我已经做了很多测试,但我仍然无法让它工作。我正在使用 Npgsql 2.0.11.91(我也试过 2.0.11)和 PostgreSQL 9.04。

使用 Npgsql 用户手册中的示例,可以找到 here .搜索“使用 .NET 数据集”以查看示例。它对我来说很好用,但我正在尝试修改它以满足我的需要。

我的代码如下。无论我尝试什么,我都会遇到某种错误。使用下面的代码,这几乎完全是用户手册中的内容,我得到一个 NpgsqlException was unhandled by user code

ERROR: 42601: syntax error at or near ":".
private void tryThis()
{
// This method expects the following table in the backend:
//
// create table customers(code varchar, reference varchar, description varchar, street varchar, suburb varchar, postcode varchar);
//
//

NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=password;Database=testdatabase;");
conn.Open();

DataSet ds = new DataSet();

NpgsqlDataAdapter da = new NpgsqlDataAdapter("select * from customers", conn);

da.InsertCommand = new NpgsqlCommand("insert into customers(code, reference, description, street, suburb, postcode) " +
" values (:a, :b, :c, :d, :e, :f)", conn);

da.InsertCommand.Parameters.Add(new NpgsqlParameter("a", NpgsqlDbType.Varchar));
da.InsertCommand.Parameters.Add(new NpgsqlParameter("b", NpgsqlDbType.Varchar));
da.InsertCommand.Parameters.Add(new NpgsqlParameter("c", NpgsqlDbType.Varchar));
da.InsertCommand.Parameters.Add(new NpgsqlParameter("e", NpgsqlDbType.Varchar));
da.InsertCommand.Parameters.Add(new NpgsqlParameter("e", NpgsqlDbType.Varchar));
da.InsertCommand.Parameters.Add(new NpgsqlParameter("f", NpgsqlDbType.Varchar));

da.InsertCommand.Parameters[0].Direction = ParameterDirection.Input;
da.InsertCommand.Parameters[1].Direction = ParameterDirection.Input;
da.InsertCommand.Parameters[2].Direction = ParameterDirection.Input;
da.InsertCommand.Parameters[3].Direction = ParameterDirection.Input;
da.InsertCommand.Parameters[4].Direction = ParameterDirection.Input;
da.InsertCommand.Parameters[5].Direction = ParameterDirection.Input;

da.InsertCommand.Parameters[0].SourceColumn = "code";
da.InsertCommand.Parameters[1].SourceColumn = "reference";
da.InsertCommand.Parameters[2].SourceColumn = "description";
da.InsertCommand.Parameters[3].SourceColumn = "street";
da.InsertCommand.Parameters[4].SourceColumn = "suburb";
da.InsertCommand.Parameters[5].SourceColumn = "postcode";

da.Fill(ds);

DataTable dt = ds.Tables[0];

DataRow dr = dt.NewRow();
dr["code"] = "CUST1";
dr["reference"] = "C";
dr["description"] = "Customer 1";
dr["street"] = "1 Big Street";
dr["suburb"] = "BRISBANE QLD";
dr["postcode"] = "4000";
dt.Rows.Add(dr);

DataSet ds2 = ds.GetChanges();

da.Update(ds2);

ds.Merge(ds2);
ds.AcceptChanges();
}

有什么想法吗?

皮特。

最佳答案

您添加了参数 e 两次,而根本没有添加参数 d...

编辑(来自您上面的代码):

da.InsertCommand.Parameters.Add(new NpgsqlParameter("e", NpgsqlDbType.Varchar));
da.InsertCommand.Parameters.Add(new NpgsqlParameter("e", NpgsqlDbType.Varchar));

关于c# - ":"处或附近的 Npgsql 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6755479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com