Member 9983063 Ответов: 1

Получение значений, где values = 0 в C# ms access


Привет, ребята, я столкнулся с проблемой, которая заключается в том, что я пишу, где не [columnname] = 0, но когда я получаю так, что он получает значение, где column = 0
пожалуйста, посмотрите мой код один раз и скажите мне решение этой проблемы
Спасибо

Что я уже пробовал:

con_string.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source =|DataDirectory|\Restaurant.accdb;Persist Security Info=False";
            con_string.Open();
            DataSet dsa1 = new DataSet();
            DataTable dt1 = new DataTable();
            dsa1.Tables.Add(dt1);
            OleDbDataAdapter da1 = new OleDbDataAdapter();
            da1 = new OleDbDataAdapter(string.Format("SELECT [column3] As [Tables],count(Tables) As [QTY] from [Total] Where [column3] like 'DineIn%' Or [Date] Between #{0}# And #{1}# Or not [column1] = 0 Group By [column3]", DateTime.Now.ToShortDateString(), DateTime.Now.AddDays(1).ToShortDateString()), con_string);
            da1.Fill(dt1);
            con_string.Close();
            int sum1 = 0;
            for (int i = 0; i < dsa1.Tables[0].Rows.Count; ++i)
            {
                sum1 += Convert.ToInt32(dsa1.Tables[0].Rows[i][1].ToString());
            }
            Dinein_Orders.Text = sum1.ToString();

1 Ответов

Рейтинг:
1

OriginalGriff

Во-первых, не делай этого! Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.
В данный момент это не является причиной вашей проблемы, но она серьезна - и вам нужно убедиться, что остальная часть вашего кода также обновлена, - иначе вы потеряете свою БД...

Проблема, которую вы заметили, проста: все ваши условия объединены-это означает, что если какое-либо из условий совпадает, то все условие оценивается как истинное.