Database 使用UniDAC创建新数据库

Database 使用UniDAC创建新数据库,database,delphi,unidac,Database,Delphi,Unidac,我一直在为一个允许用户为我的应用程序创建新数据库的功能而挣扎 它必须是一个通用函数,因为有些使用MS Access,有些使用SQLite,有些使用MySQL 我花了好几个小时查看提供的演示,却没有找到任何对我有用的东西 我想做的是,根据以下参数创建一个新的数据库:Provider、Server、Port、User、Password、db name(或filename) 我有以下创建MS Access的功能 但这并没有奏效 Calling it by SQLConfigDataSource(0

我一直在为一个允许用户为我的应用程序创建新数据库的功能而挣扎 它必须是一个通用函数,因为有些使用MS Access,有些使用SQLite,有些使用MySQL

我花了好几个小时查看提供的演示,却没有找到任何对我有用的东西

我想做的是,根据以下参数创建一个新的数据库:Provider、Server、Port、User、Password、db name(或filename)

我有以下创建MS Access的功能 但这并没有奏效

Calling it by   SQLConfigDataSource(0, 1, 'Microsoft Access Driver (*.mdb)','CREATE_DB="' + DatabaseName + '"')

Function SQLConfigDataSource(hwndParent: Integer; fRequest: Integer;
  lpszDriverString: string; lpszAttributes: string): Integer; stdcall;
var
  func : TSQLConfigDataSource;
  ODBCHModule: HMODULE;
begin
  ODBCHModule := LoadLibrary('odbccp32.dll');
  if ODBCHModule = 0 then
    raise Exception.Create(SysErrorMessage(GetLastError));
  func :=  GetProcAddress(ODBCHModule,PChar('SQLConfigDataSource'));
  if @func = nil then
    raise Exception.Create('Error Getting adress for SQLConfigDataSource' + SysErrorMessage(GetLastError));

  Result := func(hwndParent, fRequest, lpszDriverString, lpszAttributes);
  FreeLibrary(ODBCHModule);
end;
  • SQLite-只需打开一个数据库。如果它不存在,则将创建它
  • MySQL-您需要连接服务器。然后执行
    CREATE DATABASE
    命令
  • Microsoft Access-这取决于您使用的组件。我不知道UniDAC的情况。但是使用ODBC执行SQLConfigDataSource(0,ODBC添加DSN,,'CREATE\u DB=')

  • 我使用Delphi XE和UniDac 4.1.5(从第2版开始就有了,所以基础知识已经到位),您是否深入研究了
    UniDacDemo
    源代码?请确认。是的,我查看了演示源代码,但没有找到解决方案。我记得我曾设法让UniDacDemo与MysQL、PostgreSQL和Firebird配合使用:只需单击一下即可。我不确定您是否可以为MS Access创建数据库,但我相信您可以为SQLite、Postgres和MysQL创建数据库,我通过将模式设置为UniScript的SQL属性并调用。Execute我尝试了SQLConfigDataSource方法,但一开始无法使其工作。我认为可能是因为我尝试创建db的位置不受信任,但事实并非如此。所以我不知道问题出在哪里。1)您还应该使用SQLInstallerError来获取错误文本。2) 如果您使用的是Unicode Delphi,则使用SQLConfigDataSourceW。如果是非Unicode,则为SQLConfigDataSource。您是否碰巧有一个示例代码来演示这一点?