cmd = new SqlCommand("Select Max(Date_Time) From Daily_Sale ", con); cmd.ExecuteNonQuery();
string date_tim = (string)cmd.ExecuteScalar();
MessageBox.Show("date time" + date_tim);
Это показывает дату и время в окне сообщения, но когда я вызываю этот запрос:
cmdc = new SqlCommand("Select Total_Sale from Daily_Sale Where Date_Time ="+ date_tim,con);
cmdc.ExecuteNonQuery();
Я получаю синтаксическую ошибку.
Date_Time
сохраняется как nvarchar(50)
.
Вы можете попробовать
"Select Total_Sale from Daily_Sale Where Date_Time ="+ " ' " + date_tim + " ' ",con
?попробуйте так..cmdc = new SqlCommand("Выберите Total_Sale из Daily_Sale, где Date_Time = ' "+ date_tim+" ' ",con);
Вы советуете ему продолжать конкатенацию? Вы здорово помогаете, ребята. Вы когда-нибудь слышали о подготовленном заявлении?
да, это работает, но это запрос int sale_pre = (int)cmdc.ExecuteScalar(); дает ссылку на объект ошибки, не установленную для экземпляра объекта. в то время как когда я был запущен, они запрашивают («выберите Totale_Sale из Daily_sale»), это дает значение
Date_Time сохраняется в nvarchar(50). Почему? Это может вызвать у вас только проблемы. Никогда не храните дату и время в виде строк. Вместо этого используйте DateTime2.
SQL Injection предупреждение - вы должны не конкатенация вместе ваши заявления SQL - использование параметризованных запросов вместо, чтобы избежать инъекции SQL - проверить Маленький Бобби Таблицы