Database 使用UniDAC创建新数据库
我一直在为一个允许用户为我的应用程序创建新数据库的功能而挣扎 它必须是一个通用函数,因为有些使用MS Access,有些使用SQLite,有些使用MySQL 我花了好几个小时查看提供的演示,却没有找到任何对我有用的东西 我想做的是,根据以下参数创建一个新的数据库:Provider、Server、Port、User、Password、db name(或filename) 我有以下创建MS Access的功能 但这并没有奏效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
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;
CREATE DATABASE
命令我使用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。您是否碰巧有一个示例代码来演示这一点?