C#Oracle命令参数添加。如何将部分文本本身添加到命令文本中?

时间:2018-09-05 18:19:14

标签: c# sql oracle

例如以下是我的代码:

ss.StoreNumber是来自用户的字符串,store_no是数据库中的int类型。

string sql = "SELECT * FROM SALES_STATUS WHERE store_no = :SerchStore";
//Creating cmd using sql and conn
OracleCommand cmd = new OracleCommand(sql, conn);
//Create Parameters to add value
if (int.TryParse(ss.StoreNumber, out int n) == true)
{
cmd.Parameters.Add("SerchStore", int.Parse(ss.StoreNumber));
}
else
{
cmd.Parameters.Add("SerchStore", "store_no");
}

简单的函数,我要创建一个SQL应用程序,如果用户输入商店编号,则它将按商店编号返回销售状态。

否则,如果用户未在商店编号文本框中输入任何内容或输入任何非数字信息,则它应返回所有商店的信息。

我使用了以下代码:

cmd.Parameters.Add("SerchStore", "store_no");

因为我想在Oracle Develoepr中运行的此查询中使用它:

SELECT * FROM SALES_STATUS WHERE store_no = store_no;

所以我的问题是,我应该在“ X”下面添加什么以使查询成为我想要的查询?

cmd.Parameters.Add("SerchStore", X);

2 个答案:

答案 0 :(得分:2)

为此,我将运行另一个查询:

string sql = "";
if (int.TryParse(ss.StoreNumber, out int n) == true)
{
  sql = "SELECT * FROM SALES_STATUS WHERE store_no = :SerchStore";
}
else
{
  sql = "SELECT * FROM SALES_STATUS;"
}    
//Creating cmd using sql and conn
OracleCommand cmd = new OracleCommand(sql, conn);

//Create Parameters to add value
if (int.TryParse(ss.StoreNumber, out int n) == true)
{
  cmd.Parameters.Add("SerchStore", int.Parse(ss.StoreNumber));
}

如果它在存储过程中,则可能会执行类似“ OR:SerchStore is NULL”的操作,但是由于要从C#代码发送查询,因此只需发送要发送的查询即可。

答案 1 :(得分:0)

参数化查询旨在防止您现在尝试做的事情(SQL注入)。

如何执行此操作首先要检查用户输入并根据输入是否有效来获取适当的查询。