【问题标题】:PSQL can't add value to parametersPSQL 无法为参数添加值
【发布时间】:2021-05-26 13:43:47
【问题描述】:

我正在尝试编写一个易于阅读的 PSQL 查询,所以我想使用 PsqlCommand.Parameters.AddWithValue() 函数,但我有一些问题......

这是我的代码:

PsqlConnection connection = new PsqlConnection(connectionString);
PsqlCommand cmd = new PsqlCommand();
cmd.CommandTimeout = 0;
cmd.Connection = connection;
connection.Open();

cmd.CommandText = @"
    INSERT INTO Table (field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field111, field12)
    VALUES (@Field1, @Field2, @Field3, @Field4, @Field5, @Field6, @Field7, @Field8, @Field9, @Field10, @Field111, @Field12)";

cmd.Parameters.AddWithValue("@Field1", someValue1)
cmd.Parameters.AddWithValue("@Field2", someValue2);
cmd.Parameters.AddWithValue("@Field3", someValue3);
...
...
...
cmd.Parameters.AddWithValue("@Field12", someValue4);

cmd.ExecuteNonQuery();
connection.Close();

但我收到一条错误消息:Pervasive.Data.SqlClient.PsqlException: 'Pervasive.Data.SqlClient.Lna.k: [LNA][Pervasive][ODBC Engine Interface]Error in expression: @Field1 '

我尝试了其他方式,就是这个:

PsqlConnection connection = new PsqlConnection(connectionString);
PsqlCommand cmd = new PsqlCommand();
cmd.CommandTimeout = 0;
cmd.Connection = connection;
connection.Open();

cmd.CommandText = @"
    INSERT INTO Table (field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field111, field12)
    VALUES (@Field1, @Field2, @Field3, @Field4, @Field5, @Field6, @Field7, @Field8, @Field9, @Field10, @Field111, @Field12)";

PsqlParameter field1 = new PsqlParameter("@Field1", PsqlDbType.VarChar, 12);
PsqlParameter field2 = new PsqlParameter("@Field2", PsqlDbType.VarChar, 30);
PsqlParameter field3 = new PsqlParameter("@Field3", PsqlDbType.VarChar, 1);
...
...
...
PsqlParameter field12 = new PsqlParameter("@Field12", PsqlDbType.VarChar, 1);


cmd.Parameters.Add(field1).Value = someValue1;
cmd.Parameters.Add(field2).Value = someValue2;
cmd.Parameters.Add(field3).Value = someValue3;
...
...
...
cmd.Parameters.Add(field12).Value = someValue12;

cmd.ExecuteNonQuery();
connection.Close();

但我得到了同样的错误:( 任何帮助将不胜感激!

【问题讨论】:

  • 你连接的是什么类型的数据库?
  • @ChetanRanpariya 这是普遍的 SQL
  • 尝试在参数名称中使用: 而不是@。比如:Field1:Field2:Field3等。
  • 您可以尝试的其他方法是仅使用 ? 而不是参数名称,并在命令中添加名称为 ? 的参数,其值的顺序与查询中预期的顺序相同。正如stackoverflow.com/questions/18082840/… 中所建议的那样
  • Pervasive 仅使用? 作为参数。您不能使用@:

标签: c# parameters psql readability pervasive


【解决方案1】:

普遍的数据库使用? 作为参数,仅此而已。 例如:

command.CommandText = "INSERT INTO Table (name, number, date) VALUES (?, ?, ?)";
command.Parameters.AddWithValue("name", stringName);
command.Parameters.AddWithValue("number", integerNumber);
command.Parameters.AddWithValue(null, dateTimeDate);

重要!

正如您在第三个示例中所见,您可以使用null 作为变量的标识符。那是因为顺序很重要,而标识符是任意的。

【讨论】:

    猜你喜欢
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 2021-09-27
    • 2022-01-08
    • 2016-08-18
    • 1970-01-01
    相关资源
    最近更新 更多