我在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。)
答案 0 :(得分:6)
您可以使用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.
答案 1 :(得分:2)
如果您选择项目>从菜单中导入类型库,你会在(长!)列表中找到一个名为“Microsoft ADO Ext.2.8 for DLL and Security(Version 2.8)”的条目(可能是旧版本或更新版本,但它应该可以正常工作好。)
创建单元,并使用CoCatalog.Create创建Catalog对象,并使用its Create method创建由连接字符串指定的数据库。尝试使用连接字符串连接到SDF文件。