Member 9983063 Ответов: 1

Получение нулевого значения из базы данных


Здравствуйте, ребята, я столкнулся с проблемой, которая заключается в том, что я получаю значение null из БД у меня есть значения в моей БД, но в моей форме, когда я выбираю, поэтому я получаю null пожалуйста, помогите мне, как я могу это сделать

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

con_string.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source =|DataDirectory|\Restaurant.accdb;Persist Security Info=False";
            con_string.Open();
            DataSet dsa22 = new DataSet();
            DataTable dt22 = new DataTable();
            dsa22.Tables.Add(dt22);
            OleDbDataAdapter da22 = new OleDbDataAdapter();
            string query = "SELECT count(column3) As [QTY]  from [Total] Where [column3] like 'DineIn*'  AND  [Column1] <>0   AND  Cancel  IS NULL And [Date] Between #" + System.DateTime.Now.ToShortDateString() + "# AND #" + System.DateTime.Now.AddDays(1).ToShortDateString() + "# Group By [column3] ";
            da22 = new OleDbDataAdapter(query,con_string);
                      da22.Fill(dt22);
            con_string.Close();
            int sum22 = 0;
            for (int i = 0; i < dsa22.Tables[0].Rows.Count; ++i)
            {
                sum22 += Convert.ToInt32(dsa22.Tables[0].Rows[0][0].ToString());
            }
           Dinein_Orders.Text = sum22.ToString();

codejet

Вы получаете нули для всех столбцов или для конкретного столбца?

Member 9983063

я выбираю только конкретный столбец и получаю из него нулевое значение

Karthik_Mahalingam

Используйте кнопку ответа, чтобы оставлять комментарии. Так что пользователь получает уведомление и отвечает на ваш текст

PIEBALDconsult

Вы делаете очень много вещей плохо, так что потребуется время, чтобы понять это.
Я предполагаю, что у вас есть фон VB.
Во-первых, не используйте конкатенацию строк для формирования операторов SQL-всегда используйте параметризованные операторы.
Во-вторых, не используйте ToString, а затем попробуйте преобразовать-просто приведите значение.
Избегайте Адаптеров Данных.
Похоже, вы действительно хотите использовать ExecuteScalar.

1 Ответов

Рейтинг:
0

PIEBALDconsult

Просто с моей головы; что-то вроде этого могло бы послужить вам лучше.

con_string.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source =|DataDirectory|\Restaurant.accdb;Persist Security Info=False";

con_string.Open();

System.Data.IDbCommand cmd = con_string.CreateCommand() ;

cmd.CommandText = "SELECT count(column3) As [QTY]  from [Total] Where [column3] like 'DineIn*'  AND  [Column1] <>0   AND  Cancel  IS NULL And [Date] Between ? AND ? Group By [column3] ";

System.Data.IDbDataParameter prm = cmd.CreateParameter() ;
prm.ParameterName = "?" ;
prm.Value = System.DateTime.Now;
cmd.Parameters.Add ( prm ) ;

prm = cmd.CreateParameter() ;
prm.ParameterName = "?" ;
prm.Value = System.DateTime.Now.AddDays(1) ;
cmd.Parameters.Add ( prm ) ;

Dinein_Orders.Text = cmd.ExecuteScalar().ToString();

con_string.Close();



Я очень надеюсь, что вы не храните даты в виде строк.


Member 9983063

братан все еще получаю ошибку теперь вот мой код застрял
Dinein_Orders.Текст = cmd.ExecuteScalar().Метод toString();

PIEBALDconsult

Вы можете использовать "улучшить вопрос", чтобы отредактировать свой вопрос и добавить обновленный код и полный текст ошибки, которую вы получаете.