AWS AuroraにFireDAC接続[JAPAN]
毛利です。
AWS AuroraはMySQL 互換のクラウド(RDS)データベースです。
MySQL互換と言う事なので FireDAC接続を試してみました。
[Aurora DBインスタンス起動]
いくつかのDBプロダクトが出てきます
Amazon Auroraを選択します。
DB インスタンスのクラスや、インスタンス名、DB名、パスワードなどを設定し起動します。
インスタンスの詳細を見ると
クラスターエンドポイントが表示されています。このエンドポイントをTFDConnectionの接続先で使います。
[FireDAC接続]
Amazon Auroraのインスタンス作成で表示されたクラスターエンドポイントを使います。
TFDConnectionでAuroraへの接続設定を行います。
Database名、User_Name、Password、ServerをRDS Auroraのインスタンス作成時に設定した文字列を使います
DriverID=MySQL
TButton 3つ、TPanel, TDBGrid, TFDPhysMySQLDriverLink. TFDConnection, TFDQuery, TDataSourceを配置しデザイン。
[TFDPhysMySQLDriverLink設定]
フォームのOnCreateで下記コードを追加
////// void __fastcall TForm1::FormCreate(TObject *Sender) { FDPhysMySQLDriverLink1->VendorHome = L"C:¥¥projects¥¥mysql_driver¥¥mysql-connector-c-6.1.6-winx64"; FDPhysMySQLDriverLink1->VendorLib = L"libmysql.dll"; }
[TFDConnection接続]
「aurora connectボタン」クリック時にTFDConnection からAuroraに接続
//--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { FDConnection1->Connected = true; FDQuery1->SQL->Text = "use embarcadero"; FDQuery1->ExecSQL(); ShowMessage("FDConnection1->Connected = true"); }
[Aurora embarcaderoデータベース上にテーブルを新規作成とインサート]
「Create Tableボタン」のクリックイベントで
red_listと言う名称のテーブルを作成し、7行データをインサートしています。
//--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { std::vector<std::tuple<int, std::wstring, std::wstring> > _list{ std::make_tuple(1, L"オキナワオオコウモリ",L"Pteropus loochoensis"), std::make_tuple(2, L"ミヤココキクガシラコウモリ",L"Rhinolophus pumilus miyakonis"), std::make_tuple(3, L"オガサワラアブラコウモリ",L"Pipistrellus sturdeei"), std::make_tuple(4, L"エゾオオカミ",L"Canis lupus hattai"), std::make_tuple(5, L"ニホンオオカミ",L"Canis lupus hodophilax"), std::make_tuple(6, L"ニホンカワウソ(本州以南亜種)",L"Lutra lutra nippon"), std::make_tuple(7, L"ニホンカワウソ(北海道亜種)",L"Lutra lutra whiteleyi") }; UnicodeString _s = L"create table red_list(" L"num_ int not null, japanese_ varchar(20), english_ varchar(20), primary key (num_))"; FDQuery1->SQL->Text = _s; try { FDQuery1->ExecSQL(); for (auto _line: _list) { try { int _inum = std::get<0>(_line); UnicodeString _sja = std::get<1>(_line).c_str(); UnicodeString _sen = std::get<2>(_line).c_str(); _s = Format(L"insert into red_list value(%d, '%s', '%s')", ARRAYOFCONST((_inum, _sja, _sen)) ); FDQuery1->SQL->Text = _s; FDQuery1->ExecSQL(); } catch(Exception &e1){} } FDQuery1->SQL->Text = "select * from red_list"; FDQuery1->Active = true; } catch(Exception &e2){} } //---------------------------------------------------------------------------
[テーブル削除]
「Drop Tableボタン」クリックイベントで、red_listテーブルを削除。
//--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { FDQuery1->SQL->Text = L"drop table red_list"; FDQuery1->ExecSQL(); ShowMessage(FDQuery1->SQL->Text + "\nSuccessfull"); } //---------------------------------------------------------------------------
全てのSQLコマンドを試した訳ではありませんが、MySQL互換のAmazon AuroraをDireDACで利用する事ができました。


Comments
-
Please login first in order for you to submit comments