【问题标题】:Why is parametrization via ODBC C# not binding?为什么通过 ODBC C# 的参数化不绑定?
【发布时间】:2016-05-31 21:36:59
【问题描述】:

我找到了这个How to bind parameters via ODBC C#? 示例,说明如何在 C# 中通过 ODBC 进行参数化,但在我的代码中 CommandText 保留为“?”并返回错误 - 预期会发生错误。

这是我的代码:

string variable = SVariablaKlas.ToUpper(); //this is simple var like 123

Conn odbc = new Conn();
odbc.db.Open(); //this works fine -> connection is established

OdbcCommand dbCommand = odbc.db.CreateCommand();
dbCommand.CommandText = "";

if (a)
{
  dbCommand.CommandText = "SELECT col1 FROM TableName WHERE ID = ?";
} else if (b)
{
  dbCommand.CommandText = "SELECT col2 FROM TableName WHERE ID = ?";
}

dbCommand.Parameters.ADD("@ID", OdbcType.Char).Value = variable;
//or if I try this: ...Parameters.ADD(new OdbcParameter(string.Empty, variable);

OdbcDataReader dbReader = dbCommand.ExecuteReader();

...

在“Parameters.ADD”这两种情况下,我的 dbCommand.CommandText 都是“SELECT col1 FROM TableName WHERE ID = ?”然后我会得到错误:“WHERE”附近的错误[HY000]:语法错误(1)

知道问题出在哪里吗?

对于数据库,我使用的是 SQLite3 和 ODBC 驱动程序 SQLite3 ODBC 驱动程序,版本 0.9993.00.00

【问题讨论】:

    标签: c# odbc parameterized


    【解决方案1】:

    你的 SQL 应该是

    dbCommand.CommandText = "SELECT col2 FROM TableName WHERE ID = @ID";
    

    因为您的参数被命名为“@ID”

    【讨论】:

      猜你喜欢
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多