Visual C++ 2010 の C++/CLI を使うと、ADO.NET を扱うことができるのですが、なぜか Visual C++ 2010 では型付の DataSet が作れないという…へんな具合です。
試しに、Visual C++ 2005 を使ってみると DataSet を作れるので、故意に落としてしまったが、忘れてしまったかという感じ。
ちなみに、C# で作った DataSet のファイル(DataSet1.xsd)を、VC++ のプロジェクトにインポートするとうまく動きます。
ただし、インポートしたままだと、ビルドする時に DataSet1.h というファイルを自動的に作成したときに接続文字列が解決できません。
これは、もう一度 DataSet のデザイナを開いて、テーブルを作り直すか、*.xsd のファイルを開いて、接続文字列のところを直接書き換えます。C# では、アプリケーション設定から持ってきているのですが、VC++ の場合は直接、接続文字列を書くようにします。
1 2 3 4 | < Connections > < Connection ConnectionStringObject = "Data Source=.\SQLEXPRESS;Initial Catalog=sampledb;Integrated Security=True" IsAppSettingsProperty = "False" Modifier = "Assembly" Name = "sampledbConnectionString" ParameterPrefix = "@" Provider = "System.Data.SqlClient" > </ Connection > </ Connections > |
こうすると、型付の DataAdapter と DataSet が作られるので、次のようにバインドします。
1 2 3 4 5 6 7 8 9 | private : System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { DataSet1TableAdapters::t_personTableAdapter ^da = gcnew DataSet1TableAdapters::t_personTableAdapter(); DataSet1::t_personDataTable ^dt = gcnew DataSet1::t_personDataTable(); da->Fill( dt ); this ->dataGridView1->DataSource = dt ; } |
Windows XP 上ですが、一応実行例ということで。