質問: C++/CLIでMySQLを使う方法を教えてください。
回答: [MySQLの接続機能] 調べてみたら、MySQLに接続させるための機能は2種類あるようです。 ひとつは、MySQL Connector/ODBC という機能で、もうひとつは、MySQL Connector/Net という機能です。 前者のMySQL Connector/ODBC のサンプルコード等は、 OdbcConnection と MySQL のキーワードで検索して下さい。 後者のMySQL Connector/Net は、 MySqlConnection と MySqlDataAdapter のキーワードで検索して下さい。 どちらでも良いと思いますが、名前から、おそらく、後者のMySQL Connector/Net の方が新しい機能だと思います。 [C♯からC++/CLIへの書き換え] サンプルは見つかっても、VB.NET用とC♯だと思います。 よって、C♯のサンプルコードをC++/CLIへ書き換えて下さい。 私の開発用PCには、MySQLをインストールしていないので、Accessの場合での書き換えを下記に示します。申し訳ないのですが。 比較例ということで。 書き換えのコツがつかめると、本件以外でも、C♯のサンプルが使えますので、これを機会にチャレンジしてみて下さい。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1326641... //---------------- // Form1クラスのメンバー変数 private: System::Data::OleDb::OleDbConnection^ dbConnect; // DB接続子 private: String^ SelectedTableName; // 選択テーブル名 //---------------- // データベース接続 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { // 接続文字列を作成して接続 dbConnect = gcnew System::Data::OleDb::OleDbConnection(); dbConnect->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source = C:\\Program Files\\Microsoft Office\\Office\\Samples\\ADDRBOOK.MDB"; try { dbConnect->Open(); MessageBox::Show("接続に成功", "接続状態通知"); dbConnect->Close(); } catch (Exception^ ex) { MessageBox::Show(ex->Message, "接続状態通知"); } //データベースに接続してテーブル名を取得する dbConnect->Open(); DataTable^ dTab = dbConnect->GetOleDbSchemaTable(System::Data::OleDb::OleDbSchemaGuid::Tables, gcnew array { nullptr, nullptr, nullptr, "TABLE" }); dbConnect->Close(); //テーブル名をリストボックスに設定 for each (DataRow^ dr in dTab->Rows) { listBox1->Items->Add(dr[2]->ToString()); } } //---------------- // リストボックスで指定されたテーブルを表示 private: System::Void listBox1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { // 選択テーブル名 SelectedTableName = listBox1->SelectedItem->ToString(); // データセット等のオブジェクト生成 System::Data::OleDb::OleDbDataAdapter^ dataAdap; DataSet^ dataSet = gcnew DataSet(SelectedTableName); // データセットにテーブル情報を取得 dataAdap = gcnew System::Data::OleDb::OleDbDataAdapter("SELECT * FROM " + SelectedTableName, dbConnect); dataAdap->Fill(dataSet, SelectedTableName); // データセットに取得したテーブル情報をDataGridViewに設定 dataGridView1->DataSource = dataSet->Tables[SelectedTableName]; } [書き換えのポイント] 重要な書き換えのポイントは、見比べれば分かるように、わずかです。 ClassName1.ClassName2 obj = new ClassName1.ClassName2(); は、以下に書き換え。 ClassName1::ClassName2^ obj = gcnew ClassName1::ClassName2(); また、 obj.func(); は、 obj->func(); あと、配列の書式は、 ClassName[] は、 array null は、 nullptr そういった、おおまかなポイントを書き換えてから、ビルドしてみれば、あとの細かな違いは、エラーメッセージが知らせる箇所を修正するだけです。