0

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

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

我想要做的是根据以下参数创建一个新的数据库:提供者、服务器、端口、用户、密码、数据库名称(或文件名)

我有以下用于创建 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;
4

1 回答 1

1
  1. SQLite - just open a database. If it does not exist then it will be created.
  2. MySQL - you need to connect with a server. Then execute CREATE DATABASE <name> command.
  3. Microsoft Access - this depends on the components you are using. I does not know about UniDAC. But using ODBC execute SQLConfigDataSource(0, ODBC_ADD_DSN, '<driver name>', 'CREATE_DB=<db path>').
于 2012-04-21T05:55:14.107 回答