如何创建参数化查询?
How to create a parameterized query?
我被这个问题困扰了一段时间,并且已经完成了几个教程都没有成功。
如何在 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
部分和机智 : 而不是 @
并且没有 @
作为查询字符串的前缀。我尝试的另一件事是删除 Add
字符串开头的 @
/:
,例如
mySearch.Parameters.Add("nm", "SAM");
我的最终目标是使用变量来传递值,而不仅仅是语句的字符串文本,如果这样做更容易的话。
首先,您应该使用:
作为参数标识符,而不是@
,这是SQL服务器常用的。
其次,您不能使用参数提供 table 名称或字段名称。它应该是硬编码的或使用动态 SQL.
编写的
第三,你不应该转义参数。他们不需要那个。
现在最好的办法是:
string query = @"SELECT Count(*) FROM cust WHERE nm = :nm";
OracleCommand mySearch = new OracleCommand(query, newConn);
mySearch.Parameters.Add(":nm", "SAM");
我被这个问题困扰了一段时间,并且已经完成了几个教程都没有成功。
如何在 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
部分和机智 : 而不是 @
并且没有 @
作为查询字符串的前缀。我尝试的另一件事是删除 Add
字符串开头的 @
/:
,例如
mySearch.Parameters.Add("nm", "SAM");
我的最终目标是使用变量来传递值,而不仅仅是语句的字符串文本,如果这样做更容易的话。
首先,您应该使用:
作为参数标识符,而不是@
,这是SQL服务器常用的。
其次,您不能使用参数提供 table 名称或字段名称。它应该是硬编码的或使用动态 SQL.
编写的第三,你不应该转义参数。他们不需要那个。
现在最好的办法是:
string query = @"SELECT Count(*) FROM cust WHERE nm = :nm";
OracleCommand mySearch = new OracleCommand(query, newConn);
mySearch.Parameters.Add(":nm", "SAM");