尝试将 ODBC 命名参数与 SAP IQ/Sybase IQ DB 一起使用时出错
Error when trying to use ODBC Named Parameter with SAP IQ/Sybase IQ DB
我有以下适用于 mySQL 但不适用于 SAP IQ/Sybase IQ DB 的命令:
string sql = "select * from someTable where fieldName=@name";
command.CommandText = sql;
command.Parameters.Add(new OdbcParameter()
{
DbType = System.Data.DbType.Int32,
Value = 1,
ParameterName = "@name",
Direction = System.Data.ParameterDirection.Input
});
command.ExecuteNonQuery();
错误是:
ERROR [42S22] [Sybase][ODBC Driver][Sybase IQ]Column '@name' not found
我怀疑命名参数不适用于 Sybase IQ。
解决方法是根据参数的顺序,使用question maek代替命名参数:
string sql = "select * from someTable where fieldName=?";
我有以下适用于 mySQL 但不适用于 SAP IQ/Sybase IQ DB 的命令:
string sql = "select * from someTable where fieldName=@name";
command.CommandText = sql;
command.Parameters.Add(new OdbcParameter()
{
DbType = System.Data.DbType.Int32,
Value = 1,
ParameterName = "@name",
Direction = System.Data.ParameterDirection.Input
});
command.ExecuteNonQuery();
错误是:
ERROR [42S22] [Sybase][ODBC Driver][Sybase IQ]Column '@name' not found
我怀疑命名参数不适用于 Sybase IQ。
解决方法是根据参数的顺序,使用question maek代替命名参数:
string sql = "select * from someTable where fieldName=?";