Ошибка при вставке объектов DateTime с кодом C # в Access Database 2016 - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь вставить некоторые календарные даты в базу данных Access, используя C #.К сожалению, это не работает по какой-то причине.Проблема в том, что код работает абсолютно идеально на компьютерах моей средней школы, работающих под управлением Office 2007, Windows 7. Когда я запускаю тот же код на своем ноутбуке с Windows 10, я получаю сообщение об ошибке:

System.Data.OleDb.OleDbException: 'Несоответствие типов данных в выражении критериев.'

Однако календарные даты задаются в кратком формате в базе данных.

Я уже пытался преобразовать строки, которые я пытаюсь вставить в базу данных.Вот некоторые из преобразований, которые я пробовал:

Convert.ToDateTime(itemi[1]);

DateTime.Parse(itemi[2]);

DateTime.ParseExact(itemi[2], "d", null);

Где itemi[2] - одна из строк, записанных в формате календарной даты.

Например: itemi[2] = "02.05.2017"; или itemi[2] = "05.08.2019";

Я также пытался изменить символы ., найденные в строке itemi[2], на символы /, но безуспешно.Я даже пытался использовать функцию Trim(), чтобы в строке не было пробелов.Мой профессор также не смог найти решения этой проблемы, и мы часами просматривали код и искали в интернете безрезультатно.

Вот код с описанной проблемой (соединение с базой данных уже было открыто несколькими строками кода ранее, но я считаю, что это неактуально, поэтому я не включаю его в упомянутый код):

var query = "INSERT INTO Planificari (Frecventa, DataStart, DataStop, IDLocalitate) " 
          + "VALUES ('" + itemi[1].Trim() + "', '" + itemi[2].Trim() 
          + "', '" + itemi[3].Trim() +"', " + idLocalitate + ")";

OleDbCommand command = new OleDbCommand(query, connection);
command.ExecuteNonQuery(); // this is the point I get the mentioned error
                           // DataStart and DataStop are the calendar dates 
                           // in my access 2016 database
...