Delphi ADODB 创建dbf表

标签 delphi ado dbf

我必须在我的 Delphi 应用程序中创建 dbf 文件。

对于本例,我使用 ADODB。

连接字符串:

const
  ConnStringDBF =
  'Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=%s;';
  //'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=dBASE III;OLE DB Services=-1;Data Source=%s;';
  //'Driver={Microsoft Visual Foxpro Driver};SourceType=DBF;SourceDB=%s;';
  //Driver='Microsoft.ACE.OLEDB.12.0;Data Source=%s;';

和程序(不起作用):

procedure InsertRecordInDBF(file_name: string; DbfRecord: TDbfRecord);
var
  ADOConnDBF  : TADOConnection;
  ADOCommand : TADOCommand;
begin
  ADOConnDBF := TADOConnection.Create(nil);
  ADOConnDBF.ConnectionString := Format(ConnStringDBF, [data_dir]);
  ADOCommand := TADOCommand.Create(nil);
  ADOCommand.Connection := ADOConnDBF;
  ADOCommand.CommandText := 'Create Table ' + file_name + ' ('
                        + 'NUMBER CHAR(11)'
                        + ')'
                        ;
  ADOCommand.Execute;
end;

错误是:

引发异常类 EOleException 并带有消息“[Microsoft][Драйвер ODBC dBase] Ошибка синтаксиса при определении поля”。

这意味着:俄语翻译中存在语法错误。

但是这个 CommandText 工作得很好:

  ADOCommand.CommandText := 'Create Table ' + file_name + ' ('
                        + 'NUMBER_ CHAR(11)'
                        + ')'
                        ;

字段名称的差异(Number_ 而不是 Number)

如何创建带有数字字段的表格?

也许我需要不同的连接字符串?

最佳答案

看来我找到了解决这个问题的方法。正确的语法是:

  ADOCommand.CommandText := 'Create Table ' + file_name + ' ('
                        + '[NUMBER] CHAR(11)'
                        + ')'
                        ;

我在字段名称中添加了 []

关于Delphi ADODB 创建dbf表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21291234/

相关文章:

android - Delphi XE7 TBannerAd 未在 Android 上显示广告

Windows Vista 和 7 运动效果仅在显示我的表单时应用一次。为什么?

asp-classic - 使用 ADO Stream 逐行读取大文件?

数据库连接 Delphi

sql - 错误地删除了一些 Oracle DBF 文件 - 我如何告诉 Oracle XE 忘记它们?

mysql - 如何在不使用任何付费工具的情况下将 dbf 文件导入 mysql?

oop - 在运行时实现接口(interface)有什么好处?

mysql - 德尔福、ADO、MySQL : checking whether an empty set was returned

delphi - 如何以原生方式读写 dbf?

c - 我无法将一些 C 代码转换为 Delphi