确实,ODBC在支持命名参数方面存在很多问题。但是,命名参数的某些用法是可能的。
例如,在您的情况下,以下语法有效:
OdbcCommand cmd = sql.CreateCommand();cmd.CommandText = "SELECt UNIQUE_ID FROM userdetails WHERe USER_ID = ?";cmd.Parameters.Add("USER_ID", OdbcType.VarChar, 250).Value = email;
更棘手的情况是,当您没有像USER_ID =?这样的参数的唯一匹配项时;例如,当您想在 WHERe 子句中使用 IN 运算符时。 __
然后,以下语法将完成这项工作:
OdbcCommand cmd = sql.CreateCommand();cmd.CommandText = "SELECt UNIQUE_ID FROM userdetails WHERe USER_ID IN (?, ?)";cmd.Parameters.Add("?ID1", OdbcType.VarChar, 250).Value = email1;cmd.Parameters.Add("?ID2", OdbcType.VarChar, 250).Value = email2;
请注意的用法 ? (问号)而不是参数名称中的 @
(符号)。尽管注意在这种情况下参数值的替换与它们的名称无关,而仅与它们在参数集合中的顺序无关。
我希望这有帮助 :-)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)