Npgsql Syntax Error at or near “:”
我已经看了几天了,我已经做了很多测试,但我仍然无法让它工作。 我正在使用Npgsql 2.0.11.91(我也试过2.0.11)和PostgreSQL 9.04。
使用Npgsql用户手册中的示例,可以在此处找到。 搜索"使用.NET数据集"以查看示例。 它对我来说很好,但我正在尝试修改它以满足我的需要。
我的代码如下。 无论我尝试什么,我都会遇到某种错误。 使用下面的代码几乎正是用户手册中的内容我得到的NpgsqlException未被用户代码处理
1 | ERROR: 42601: syntax error at or near":". |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | 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(); } |
有任何想法吗?
皮特。
您添加param
编辑(来自上面的代码):
1 2 |
我也遇到问题,遵循npgsql文档,并在使用冒号声明参数时出错。
事实证明,在最新版本中,您可以使用.NET样式AddWithValue,例如,
1 | cmd.Parameters.AddWithValue("@paramName", paramValue); |