Ваша проблема вызвана Zip decimal(5)
, так как драйверу ODBC dBase это не нравится. Сверху головы, и после быстрого гугла я не смог придумать синтаксис, который будет терпеть. Он очень рад, если вы используете провайдера OleDb следующим образом:
using (var dBaseConnection = new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0; " +
@" Data Source=C:\Users\RobertWray\Documents\dBase; " +
@"Extended Properties=dBase IV"))
{
dBaseConnection.Open();
string createTableSyntax =
"Create Table Person " +
"(Name char(50), City char(50), Phone char(20), Zip decimal(5))";
var cmd = new OleDbCommand(createTableSyntax, dBaseConnection);
cmd.ExecuteNonQuery();
}
Один вопрос: Вы уверены , что хотите создать столбец Zip в виде десятичной дроби? Не являясь резидентом США, я не уверен на 100% в этой информации, но согласно Википедии Почтовые коды могут начинаться с 0
. Хранение их в виде числового типа данных не позволит вам точно представить это.
Мой код для создания таблицы через ODBC:
using (var dBaseConnection = new OdbcConnection(@"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=C:\Users\RobertWray\Documents\dBase;"))
{
dBaseConnection.Open();
string str0 = "Create Table Person2 (Name char(50), City char(50), Phone char(20))";
var cmd = new OdbcCommand(str0, dBaseConnection);
cmd.ExecuteNonQuery();
}