MySQLのデータベース名の取得

解決


かず  2011-03-19 23:27:35  No: 40272

Delphi2010、MySQL5.5.8にdbExpressで接続しています。
接続やテーブル取得はできましたが、データベース名のリストを作成したいので、下記のようにかきましたが取得できません。
  with SQLConnection1 do begin
    try
      Connected := False;
      Params.Values['DriverName'] := 'MySQL';
      Params.Values['HostName'] := EditHostName.Text;
      Params.Values['Database'] := EditMySQLDataBase.Text;
      Params.Values['User_Name'] := EditMySQLUser.Text;
      Params.Values['ServerCharset'] := 'cp932';
      LabelSchema.Caption := EditMySQLDataBase.Text;
      Connected := True;
      SQLConnection1.GetSchemaNames(ListBox1.Items);  <--ここで取得したい
      SQLConnection1.GetTableNames(ListBoxMySQLTable.Items, False);  <--ここは正常
      PageControlHyouDB.ActivePage := TabSheetHenkan;
      ImageMySQL.Visible := True;
    except
      PageControlHyouDB.ActivePage := TabSheetSetsuzoku;
      ImageMySQL.Visible := False;
      ListBoxMySQLTable.Items.Clear;
      EditMySQLTableName.Text := '';
      BitBtnSQLConnect.Caption := '接続';
      Beep;
      ShowMessage('SQLサーバーが見つかりません。接続の条件を設定して[接続]ボタンを押してください。');
    end;
  end;
ですが
GetSchemaNamesは使えないのでしょうか


igy  2011-03-20 03:44:20  No: 40273

Queryで、
show databases;
で取得するのでは、だめですか?


かず  2011-03-20 06:39:46  No: 40274

igyさん、ありがとうございました。
システムデータベース'information_schema'に接続し、テーブル'Schemata'を読み込むようにしました。
ここにいろいろな情報が取れるので便利です。

//---  databaseのリストを作成する
  with SQLConnectionSys do begin
    try
      Params.Values['DriverName'] := 'MySQL';
      Params.Values['HostName'] := EditHostName.Text;
      Params.Values['Database'] := 'information_schema';
      Params.Values['User_Name'] := EditMySQLUser.Text;
      Params.Values['Password'] := EditMtSQLPassword.Text;
      ComboBoxSQLDatabaseName.Items.Clear;
      SQLQuerySys.First;
      while not SQLQuerySys.Eof do begin
        ComboBoxSQLDatabaseName.Items.Add(SQLQuerySys.FieldByName('SCHEMA_NAME').Value);
        SQLQuerySys.Next;
      end;
    except
      Beep;
      ShowMessage('MySQLサーバーからデータベースのリストが作成できませんでした。');
    end;
  end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加