Member 12996616 Ответов: 1

Неправильная дата хранится в базе данных ms access. (что-то вроде 01-07-1894 00: 00: 00, даже когда я сохраняю 12-03-2017)


Я разрабатываю оконное приложение через vb.net но каждый раз,когда я сохраняю дату в access ms db, она сохраняет дату типа 01-07-1894 00:00:00, даже когда я сохраняю 12-03-2017 из Date Time Picker...
Я пробовал выбирать разные даты, и каждый раз, когда я получаю дату, она хранится в БД, как "**-**-1894"
Я переделал элементы управления формами, переустановил программное обеспечение, но все равно мне не повезло..
Пожалуйста, кто-нибудь, помогите мне...!!
Заранее спасибо..........!!

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

Попробуй
Dim ds как новый набор данных()
cn = New OleDbConnection(str)
спицы.Открыть()
cmd = New OleDbCommand ("select * from cus_reg_table", cn)
Dim da как новый OleDbDataAdapter(cmd)
cmd = New OleDbCommand ("вставить в cus_reg_table (cid,cdate,cname,caddr,cmob) значения ("+cnumLabel.Текст + ", " + DateTimePicker1.Текст + ", '" + cnameTextBox.Текст + "', '" + addressstextbox.Текст + "', " + cmobnoTextBox.Текст +")", cn)
УМК.Метод executenonquery()
MsgBox ("запись успешно добавлена.....")
спицы.Рядом()
Поймать ex как исключение
MsgBox(напр. сообщение.Метод toString)
Конец Попытки

Bryian Tan

не хватает одной цитаты?

",'"+ DateTimePicker1.Текст + "','"

Member 12996616

но что, если я использую одну кавычку, то она сохранит мою дату как строку no..???
Позже я не хочу проблем при их извлечении и сравнении дат...

Member 12996616

поскольку тип данных "cdate", который я использую в access db, - это"дата/время"..
Я думаю, что если я использую '"+DateTimePicker1.текст+" " или " "+элемент datetimepicker.Ценность.Date+" ' тогда он будет хранить мою дату как строку/текст, а не как саму дату ... но я не уверен в своем мышлении...

Bryian Tan

Может быть # а '. Подумайте об этом так: Если вы собираетесь написать запрос из базы данных Access для вставки данных, как этот запрос будет выглядеть?

1 Ответов

Рейтинг:
0

OriginalGriff

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

Измените свой код:

cmd = New OleDbCommand("INSERT INTO cus_reg_table (cid,cdate,cname,caddr,cmob) VALUES (@CID, @CDT, @CNM, @CAD, @CMO)"
cmd.Parameters.AddWithValue("CID", cnumLabel.Text)
cmd.Parameters.AddWithValue("CDT", DateTimePicker1.Value)
cmd.Parameters.AddWithValue("CNM", cnameTextBox.Text)
cmd.Parameters.AddWithValue("CAD", addressTextBox.Text)
cmd.Parameters.AddWithValue("CMO", cmobnoTextBox.Text)
cmd.ExecuteNonQuery()


Скорее всего, это одновременно решит и вашу проблему.


Maciej Los

5ед!