Суть в том, что у меня в базе данных есть как даты, так и десятичные числа. Однако, при записывании в запрос числа с запятой он крашится с данным сообщением:
System.Data.OleDb.OleDbException: "Не совпадает число значений запроса и число результирующих полей.
Запрос:
Order = new OleDbCommand("INSERT INTO Abiturients ( Institut_Code, Abiturient_Code, Lastname, Gender, Birthdate, Average_Score)" + // SQL-запрос - вставить полученные
" VALUES ('" + Icode + "', '" + Acode + "', '" + Lname + "', '"+ Gender +"', '"+ Bdate +"', "+ Average_Score +")", Connection);
Всё, соответственно, string, кроме Average_Score. Сам Average_Score получается из
Average_Score = double.Parse(textbox1.Text)
Попытался поменять среду исполнения (или как оно там зовётся) с русской на английскую - меняется дата, и запрос выдаёт ошибку о нарушении соответствия данных. Уважаемые знатоки, спасите.
Как верно указали выше, лучше использовать параметризованные запросы. Однако, это не всегда возможно (например, когда запрос собирается по частям с учетом разных учловий - не только значения проверок, но и их наличие).
Для понимания сути проблемы, нужно понимать, каким образом данные преобразуются в текстовый вид. Выведите на печать значения, которые вызывают ошибки и проверьте их формат. MS Access очень привередлив в этом плане.
# не правильно
>>> sqlstr = 'SELECT * FROM tablename WHERE score = ' + str(score) + ';'
'SELECT * FROM tablename WHERE score = 12,3;'
# правильно
>>> str_score = str(score).replace(',', '.')
>>> sqlstr = 'SELECT * FROM tablename WHERE score = ' + str_score + ';'
'SELECT * FROM tablename WHERE score = 12.3;'
#M/D/YYYY#
. Отмечу, что разделитель должен быть именно /
, а не точка или пробел. Порядок указания месяца и дня так же важны. Сперва указывается месяц, затем день. При этом числа должны быть в односимвольном формате (вместо 01-31
для дней и 01-12
для месяца должно быть указано 1-31
и 1-12
соответственно). Дата с обоих сторон заключается в решетку #
.# не правильно
>>> sqlstr = 'SELECT * FROM tablename WHERE bdate = ' + str(bdate) + ';'
'SELECT * FROM tablename WHERE bdate = 14.11.2019;'
# правильно
>>> d, m, y = splitdate(bdate)
>>> sqlstr = f'SELECT * FROM tablename WHERE bdate = #{m}/{d}/{y}#;'
'SELECT * FROM tablename WHERE bdate = #11/14/2019#;'
... используйте параметризованные запросы. Следующей у Вас вылезет ошибка с датой.
"через параметры" десятичный разделитель вообще не имеет значения. Конечно, если параметр - число, а не строка.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть класс Stack(стек реализованный на основе массива)(поля: массив stackArr и счётчик count)В нём реализован метод Pop(извлечение элемента из стека)
такая проблема: нужна вывести Авто,вес прицепа которых больше 1500
Доброго времени всем читающим!
Помогите сделать кастомный ProgressBar прочитал этот и этот пост дело в том, что мне нужен ProgressBar не совсем правильной(круглой) формы