如何在Delphi中创建SQL Server CE数据库?

时间:2012-06-08 13:24:19

标签: c# delphi sql-server-ce

我在C#中编写了一个应用程序,它将数据存储在SQL Server CE数据库(v3.5)中。我想从Delphi应用程序中使用这些数据。我找到了有关how to access an SDF file from Delphi code的信息,因此这部分简洁明了。

不幸的是,有些情况下Delphi应用程序应该能够首先创建SDF文件。我想我需要在C#(DataContext子类)中编写ORM DLL并在两个应用程序中使用它(从Delphi到COM Interop),但我不确定这是个好主意。任何建议将不胜感激。

(我有Delphi 6和XE2。)

2 个答案:

答案 0 :(得分:6)

您可以使用Create

Catalog Object (ADOX)方法

试试这个示例应用

{$APPTYPE CONSOLE}

{$R *.res}

uses
  ActiveX,
  ComObj,
  SysUtils;

procedure CreateSQLCeDatabase(const DataBase : string);
Var
  Catalog : OleVariant;
begin
  Catalog := CreateOleObject('ADOX.Catalog');
  Catalog.Create(Format('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=%s',[DataBase]));
end;

begin
 try
    CoInitialize(nil);
    try
      CreateSQLCeDatabase('C:\Data\Bar.sdf');
    finally
      CoUninitialize;
    end;
 except
    on E:EOleException do
        Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
    on E:Exception do
        Writeln(E.Classname, ':', E.Message);
 end;
 Writeln('Press Enter to exit');
 Readln;
end.

答案 1 :(得分:2)

如果您选择项目>从菜单中导入类型库,你会在(长!)列表中找到一个名为“Microsoft ADO Ext.2.8 for DLL and Security(Version 2.8)”的条目(可能是旧版本或更新版本,但它应该可以正常工作好。)

创建单元,并使用CoCatalog.Create创建Catalog对象,并使用its Create method创建由连接字符串指定的数据库。尝试使用连接字符串连接到SDF文件。