none
Подскажите как правильно задать в запросе условия? RRS feed

  • Вопрос

  • Здраствуйте, у меня есть запрос к БД:

    OldStr = "Select VK_ID from MembersInfo where City ='" + cbx_City.Text +"'";

    У меня условия отбора производится по городу Москва подскажите, какое мне задать условие, что бы запрос игнорировал пустые строки в поле VK_ID?





Ответы

  • А какого типа у вас VK_ID? Если это символьный тип, то добавьте в условие AND VK_ID <> '':

    Select VK_ID from MembersInfo where City = @City AND VK_ID IS NOT NULL AND VK_ID <> ''

    И еще, как я написал, строчку 

    com = new OleDbCommand() { Connection = con };

    надо писать в начале вашего метода, второй строкой, а еще конкретнее, после объявления переменной con.


  • public void SendVKMesseges(){
       OleDbConnection con = new OleDbConnection(connectionString); // ПЕРВАЯ строка
       com = new OleDbCommand() { Connection = con };               // ВТОРАЯ строка

Все ответы

  • Ну, во-первых, используйте параметры.  А запрос следует написать таким образом:

    string OldStr = "Select VK_ID from MembersInfo where City = @city AND VK_ID IS NOT NULL";


    • Изменено Varlamov Oleg 19 мая 2013 г. 15:58
    • Предложено в качестве ответа Naomi N 19 мая 2013 г. 19:12
  • Ну, во-первых, используйте параметры.  А запрос следует написать таким образом:

    string OldStr = "Select VK_ID from MembersInfo where City = @city AND VK_ID IS NOT NULL";


    Вот как я сделал используя параметры: 

    OldStr = "Select VK_ID from MembersInfo where City = @City AND VK_ID IS NOT NULL";
    com.Parameters.Add("@City", OleDbType.Char, 55).Value = cbx_City.Text;

    водится ошибка (В экземпляре объекта не задана ссылка на объект.) 

  • Используйте дебаггер для того чтобы понять в чем ошибка. Как я понимаю, у вас com=null  потому, что вы его инициализируете двумя строчками ниже.
    com = new OleDbCommand(OldStr, con);
    Инициализируйте объекты раньше чем их используете.
  • Используйте дебаггер для того чтобы понять в чем ошибка. Как я понимаю, у вас com=null  потому, что вы его инициализируете двумя строчками ниже.
    com = new OleDbCommand(OldStr, con);
    Инициализируйте объекты раньше чем их используете.
    Простите, не понял как инициализируйте объекты раньше чем их используйте??
  • Как самый простой вариант, напишите строчку 

    com = new OleDbCommand(OldStr, con);

    перед той строкой, на которой у вас вышла ошибка.

  • Как самый простой вариант, напишите строчку 

    com = new OleDbCommand(OldStr, con);

    перед той строкой, на которой у вас вышла ошибка.

    Написал вот вышла ошибка (Отсутствует значение для одного или нескольких требуемых параметров):


  • Иван, ровно на одну строчку ниже надо было, это раз. А два, лучше написать так:

    1) Вверху объявляете com = new OleDbCommand() {Connection = con};

    2) Избавляетесь от OldStr  и везде вместо OldStr = "..." пишете com.CommandText = "...";

    3) Избавляетесь от com = new OleDbCommand(OldStr, con);

     
    • Предложено в качестве ответа Naomi N 19 мая 2013 г. 19:13
  • Иван, ровно на одну строчку ниже надо было, это раз. А два, лучше написать так:

    1) Вверху объявляете com = new OleDbCommand() {Connection = con};

    2) Избавляетесь от OldStr  и везде вместо OldStr = "..." пишете com.CommandText = "...";

    3) Избавляетесь от com = new OleDbCommand(OldStr, con);

     
    а что ставить место "..."?
  • Соответствующие команды, которые вы присваиваете, к примеру, вместо

    OldStr = "Select VK_ID from MembersInfo where City = @City AND VK_ID IS NOT NULL";

    надо написать

    com.CommandText = "Select VK_ID from MembersInfo where City = @City AND VK_ID IS NOT NULL";

    • Изменено Varlamov Oleg 19 мая 2013 г. 18:28
    • Предложено в качестве ответа Naomi N 19 мая 2013 г. 19:13
  • Соответствующие команды, которые вы присваиваете, к примеру, вместо

    OldStr = "Select VK_ID from MembersInfo where City = @City AND VK_ID IS NOT NULL";

    надо написать

    com.CommandText = "Select VK_ID from MembersInfo where City = @City AND VK_ID IS NOT NULL";

    Вот, как написал

    if (RadioButton_SelectCity.Checked == true)
      {
         com = new OleDbCommand() { Connection = con };
         com.CommandText = "Select VK_ID from MembersInfo where City = @City AND VK_ID IS NOT NULL";
         com.Parameters.Add("@City", OleDbType.Char, 55).Value = cbx_City.Text;           
      }

    Ну, все равно пустые строки подхватывает


  • А какого типа у вас VK_ID? Если это символьный тип, то добавьте в условие AND VK_ID <> '':

    Select VK_ID from MembersInfo where City = @City AND VK_ID IS NOT NULL AND VK_ID <> ''

    И еще, как я написал, строчку 

    com = new OleDbCommand() { Connection = con };

    надо писать в начале вашего метода, второй строкой, а еще конкретнее, после объявления переменной con.


  • А какого типа у вас VK_ID? Если это символьный тип, то добавьте в условие AND VK_ID <> '':

    Select VK_ID from MembersInfo where City = @City AND VK_ID IS NOT NULL AND VK_ID <> ''

    И еще, как я написал, строчку 

    com = new OleDbCommand() { Connection = con };

    надо писать в начале вашего метода, второй строкой, а еще конкретнее, после объявления переменной con.


    Простите, ну я не могу понять вот это:

    надо писать в начале вашего метода, второй строкой, а еще конкретнее, после объявления переменной con.

    Покажите пример на коде? Спасибо

  • public void SendVKMesseges(){
       OleDbConnection con = new OleDbConnection(connectionString); // ПЕРВАЯ строка
       com = new OleDbCommand() { Connection = con };               // ВТОРАЯ строка

  • public void SendVKMesseges(){
       OleDbConnection con = new OleDbConnection(connectionString); // ПЕРВАЯ строка
       com = new OleDbCommand() { Connection = con };               // ВТОРАЯ строка

    Все я уже сам понял, спасибо за терпение и понимание!