0

ユーザーが自分のアプリ用に新しいデータベースを作成できるようにする機能に苦労しています。MSAccess、SQLite、MySQLを使用する機能もあるため、ユニバーサル機能である必要があります。

何も役に立たないのに、提供されたデモを何時間も見てきました。

私がしたいのは、プロバイダー、サーバー、ポート、ユーザー、パスワード、DB名(またはファイル名)のパラメーターを指定して、新しいデータベースを作成できるようにすることです。

私はMSAccessを作成するために次の機能を持っていますが、それはうまくいきません。

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 - データベースを開くだけです。存在しない場合は作成されます。
  2. MySQL - サーバーに接続する必要があります。次に、CREATE DATABASE <name>コマンドを実行します。
  3. Microsoft Access - これは、使用しているコンポーネントによって異なります。UniDACについては知りません。ただし、ODBC execute を使用しますSQLConfigDataSource(0, ODBC_ADD_DSN, '<driver name>', 'CREATE_DB=<db path>')
于 2012-04-21T05:55:14.107 に答える