如何通过ODBC C#绑定参数?

我需要绑定来自C#的ODBC查询参数。 这是示例代码,但VS告诉我,有一个参数丢失。

OdbcCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT * FROM user WHERE id = @id"; cmd.Parameters.Add("@id", OdbcType.Int).Value = 4; OdbcDataReader reader = cmd.ExecuteReader(); 

什么是在ODBC上绑定值的语法?

Odbc不能使用命名参数。 这意味着命令string为每个参数使用占位符,并且此占位符是单个问号,而不是参数名称。

OdbcCommand.Parameters

然后,您需要按照它们出现在命令string中的顺序将参数添加到集合中

 OdbcCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT * FROM [user] WHERE id = ?"; cmd.Parameters.Add("@id", OdbcType.Int).Value = 4; OdbcDataReader reader = cmd.ExecuteReader(); 

你还有另一个问题,USER字是每个MS Access数据库的保留关键字,如果你想使用它作为字段名或表名,则需要用括号括起每个引用。 我强烈build议,如果可能的话,更改表名,因为你会经常遇到这个问题。

使用"?" 如果使用的是ODBC,则代替@

尝试做如下:

 OdbcCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT * FROM user WHERE id = ?"; cmd.Parameters.Add("@id", OdbcType.Int).Value = 4; OdbcDataReader reader = cmd.ExecuteReader();