[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♯のサンプルが使えますので、これを機会にチャレンジしてみて下さい。
<C♯時>
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1326641...
<C++/CLI時>
//----------------
// 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<Object^> { 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<ClassName^>
null
は、
nullptr
そういった、おおまかなポイントを書き換えてから、ビルドしてみれば、あとの細かな違いは、エラーメッセージが知らせる箇所を修正するだけです。
MySQLのバージョンにあわせたMySQL ODBCを準備すれば良いだけのはずだが単語だけでは無理だとすると入門書でも読んでもらうほうが先かもしれん
世界でいちばん簡単なVisualC++のe本―標準C++とC++/CLIの基本と考え方がわかる本
MySQL ODBCについては下から辿ってくれ。
http://dev.mysql.com/doc/refman/5.1/ja/myodbc-introduction.html
mysqlppというライブラリを使いMySQLへアクセスしていました。
元々、MySQLに標準で含まれていたものです。
http://tangentsoft.net/mysql++/
サンプルを見てもらうと分かりますがシンプルに書ける
ライブラリとなっています。
http://tangentsoft.net/mysql++/doc/html/userman/tutorial.html#si...
どうもです。
[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♯のサンプルが使えますので、これを機会にチャレンジしてみて下さい。
<C♯時>
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1326641...
<C++/CLI時>
//----------------
// 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<Object^> { 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<ClassName^>
null
は、
nullptr
そういった、おおまかなポイントを書き換えてから、ビルドしてみれば、あとの細かな違いは、エラーメッセージが知らせる箇所を修正するだけです。
ありがたいです。