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は使えないのでしょうか
Queryで、
show databases;
で取得するのでは、だめですか?
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;
ツイート | ![]() |