如何创建参数化查询
本文关键字:参数 查询 创建 何创建 | 更新日期: 2023-09-27 18:15:43
我已经被这个问题困扰了一段时间,并且已经通过了几个教程,但没有成功。
如何在c#中使用参数化查询与Oracle.ManagedDataAccess.dll
而不是旧的Oracle.DataAccess.dll
?
我试过的代码是:
string query = @"SELECT Count(*) FROM @table WHERE @custNM = '@nm'";
OracleCommand mySearch = new OracleCommand(query, newConn);
mySearch.Prepare();
mySearch.Parameters.Add("@table", "cust");
mySearch.Parameters.Add("@custNM", "nm");
mySearch.Parameters.Add("@nm", "SAM");
我也尝试过没有mySearch.Prepare
部分和with:而不是@
,没有@
前缀查询字符串。我尝试的另一件事是在Add
字符串的开头删除@
/:
,例如
mySearch.Parameters.Add("nm", "SAM");
我的最终目标是使用变量来传递值,而不仅仅是语句的字符串文本,如果这样做更容易的话。
首先,您应该使用:
作为参数标识符,而不是SQL Server常用的@
。
第二,不能使用参数提供表名或字段名。它应该硬编码或使用动态SQL编写。
第三,不应该转义参数。他们不需要那个。
现在最好的事情就是:
string query = @"SELECT Count(*) FROM cust WHERE nm = :nm";
OracleCommand mySearch = new OracleCommand(query, newConn);
mySearch.Parameters.Add(":nm", "SAM");