Команда Oracle C # Параметры доп. Как я могу добавить часть самого текста в текст команды? - PullRequest
0 голосов
/ 05 сентября 2018

Например, ниже мой код:

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 голосов
/ 05 сентября 2018

Для этого я бы просто запустил другой запрос:

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));
}

Если бы это было в хранимой процедуре, вы могли бы сделать что-то вроде «ИЛИ: SerchStore is NULL», но, поскольку вы отправляете запрос из кода C #, просто отправьте запрос, который вы хотите отправить.

0 голосов
/ 05 сентября 2018

Параметризованные запросы предназначены для предотвращения того, что вы пытаетесь сделать прямо сейчас (инъекция sql).

как вы могли бы это сделать, это сначала проверить пользовательский ввод и получить соответствующий запрос в зависимости от того, допустим ли ввод или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...