Передать нулевые значения в команде SQL (для двух столбцов) - добавление в цикле Foreach - PullRequest
0 голосов
/ 17 января 2019

Я хочу выбрать строки из моей таблицы SQL Server (в ней есть 3 столбцы) и отобразить их в моем Datagridview. Моя проблема с нулевыми значениями. Как я могу передать нулевые значения? (Иногда первый столбец и второй столбец пусты. ).

Ниже мой код:

    string cm = "SELECT column1, column2, column3 FROM mytablename WHERE column1='" 
   + sIS[mSI] + "' AND column2='" + sR[mSSI] + "' OR column1='" + sR[mSSI] 
   + "' AND column2='" + sIS[mSI] + "'";

Примечание: я отредактировал свой код.

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Я думаю, что ответом на ваш вопрос является использование "DBNull.Value", как указано выше, что-то вроде этого;

            string cm = "SELECT column1, column2, column3 FROM mytablename WHERE column1='"
           + DBNull.Value + "' AND column2='" + DBNull.Value + "' OR column1='" + sR[mSSI]
           + "' AND column2='" + DBNull.Value + "'";
0 голосов
/ 17 января 2019

Вы должны использовать параметры для передачи значений в оператор SQL, иначе вы будете уязвимы для атак внедрения SQL. Вы можете создать SqlCommand объект, создать SqlParameter объекты, а затем установить для них значения. Если любое из ваших значений равно нулю, вы можете передать DBNull.Value в качестве значения параметра.

SqlCommand cmd = con.CreateCommand();
string cm = "SELECT column1, column2, column3 "
cm += "FROM mytablename "
cm += "WHERE column1=@mSI "
cm += "AND column2=@mSSI OR column1=@mYSI AND column2=@mSI";
cmd.CommandText = cm;

for(int mSSI=0; mSSI<sR.Count(); mSSI++)
{
   cmd.Parameters.AddWithValue("@mSI ", sR[mSI]);

   // check for a null value
   if (sr[mSSI] == null)
   {
     cmd.Parameters.AddWithValue("@mSSI", DBNull.Value);
   }
   else
   { 
     cmd.Parameters.AddWithValue("@mSSI", sR[mSSI]);
   }

   cmd.Parameters.AddWithValue("@mYSI", sR[mYSI]);

   SqlDataAdapter sd = new SqlDataAdapter(cmd);
   DataTable dat = new DataTable();
   sd.Fill(dat);
   // clear parameters after each iteration
   cmd.Parameters.Clear()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...