2

我用 C# 编写了一个应用程序,它将其数据存储在 SQL Server CE 数据库 (v3.5) 中。我想使用 Delphi 应用程序中的这些数据。我找到了有关如何从 Delphi 代码访问 SDF 文件的信息,因此这部分内容简洁明了。

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

(我有 Delphi 6 和 XE2。)

4

2 回答 2

6

您可以使用目录对象(ADOX)Create的方法

试试这个示例应用

{$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.
于 2012-06-08T15:25:49.330 回答
2

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

创建单元,并使用 CoCatalog.Create 创建 Catalog 对象,并使用其 Create 方法创建由连接字符串指定的数据库。尝试使用您一直用来连接到 SDF 文件的连接字符串。

于 2012-06-08T14:36:51.127 回答