Я пишу приложение на C #, которое считывает информацию из файла .mdb, используя пространство имен System.Data.OleDb. Таблица, из которой я читаю, содержит информацию об образце (номер, индекс, дата и т. Д.). Число и дата являются обязательными записями, когда новый элемент добавляется в таблицу, но индекс является необязательным, поэтому некоторые образцы не имеют индекса. Я могу просто выполнить запрос, используя следующий код:
string id = "99";
OleDbConnection myConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\...\Database\data.mdb");
myConnection.Open();
OleDbCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = "SELECT SampNo, Index, DateTime FROM Sample WHERE SampNo=" + id;
OleDbDataReader myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
Console.WriteLine("\t{0}\t{1}\t{2}", myReader["SampRef"], myReader["Index"], myReader["DateTime"]);
}
Однако на самом деле я хочу запросить таблицу и получить выборки на основе значения индекса, поэтому я пытаюсь сделать это, подставив строку запроса:
myCommand.CommandText = "SELECT SampNo, Index, DateTime FROM Sample WHERE Index=" + id;
Но когда я запускаю его, он генерирует исключение OleDbException в строке "myCommand.ExecuteReader ()", которая говорит "Несоответствие типов данных в выражении критериев".
Я не очень хорошо разбираюсь в запросах к базе данных, поэтому я предполагаю, что есть другой способ выполнить этот запрос, который будет работать. Есть мысли ??