Как создать таблицу OLEDB со столбцом с именем DATE?

Мы используем поставщик Microsoft Jet OLEDB для вставки данных в устаревшую систему.

Эта система требует, чтобы мы вставляли данные, создавая файл DBF, который имеет формат:

employee Numeric (10,0),
jobcode Numeric (10,0),
date date

Итак, делаем следующее:

string strConnDbase = @"Provider = Microsoft.Jet.OLEDB.4.0" +
    ";Data Source = " + ruta +
    ";Extended Properties = dBASE IV" +
    ";User ID=Admin;Password=;";

Затем мы запускаем команду вида:

string sql = "CREATE TABLE 20110112 ( EMPLOYEE Numeric(10,0), JOBCODE Numeric(10,0), DATE Date)";

К сожалению, этот оператор "sql" не работает. IE, столбец с именем «дата» является ключевым словом, поэтому мы не можем создать таблицу.

Мы пытались экранировать (одинарные и двойные кавычки) имя столбца, но это тоже не работает.

Как мы можем построить таблицу со столбцом с именем «дата»?

Спасибо!

-- Энтони


person Anthony    schedule 17.01.2011    source источник


Ответы (2)


Попробуйте квадратные скобки:

CREATE TABLE 20110112 ( EMPLOYEE Numeric (10,0), JOBCODE Numeric (10,0), DATE [Date])

У меня нет под рукой цели OLEDB, так что это всего лишь предположение, FWIW.

person Chris B. Behrens    schedule 17.01.2011

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

Просто добавьте префикс SOMEthing... даже если это просто "T" для "Table".

создать таблицу T20110112

person DRapp    schedule 08.02.2011
comment
Jet/ACE позволяет создать таблицу, имя которой начинается с цифры или полностью состоит из цифр. Я только что успешно запустил CREATE TABLE 211123 в Access QBE, и он без проблем создал таблицу. Другой вопрос, является ли это хорошей практикой, но это, безусловно, возможно. - person David-W-Fenton; 08.02.2011