如何创建参数化查询

本文关键字:参数 查询 创建 何创建 | 更新日期: 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");