またも、面倒な山にスタックしたのだった。
SQLでレコードが拾えない感じ。
テーブルにはアクセスしてるんだが・・・
うーむ面倒臭い。いやだコレなにこれ。
DAO → ADO → ADO.NET
-----------------------------
ODBC OLE2(ActiveX) ole.NET
ADOは、WindowsXP全盛のMFC時代の遺構であり、
DAOは、更に古い遺跡である。
過去にはODBCがあり、MDACがあり、今はOleDBがある。
なんとも、重なり合って無駄臭い。
この辺り、データベース取り扱いの手段だけでも
軽く本が何冊も並び、同じ結果をもたらす、異なる
手順が、常に別の表現に変わり・・・・
まあ歴史的にこの上にもっと大きな時代の変化というか、
ISAM、btrieveから、SQL規格、オブジェクトDBだのと
DB世界の流行変遷が、毎回毎回手を換え品を換え・・・と。
いわくコード再利用が容易になると触れ込んだものは、
すべて手間の掛かる前準備が必要だったし、ゴテゴテと
要らない機能を積み込んだ、街中で見かける小汚い修繕用
車両の道具箱のように散らかっている状態が延々と続く。
さて、ADOからoledb移行について調べるとするか。 無駄足だった。
まとめ
・判ったことを書くとこうなる。
ADOなら、connection -> recordset を呼び出すだけ。
例はうまく動かないから、これはもしかすると手抜きかもしれない。
oleDB(ADO.NET?) だと・・・
OleDbConnection
|
OleDbCommand
|
+-OleDbDataAdapter
|
+--- DataSet
ADODB.Connection cnn = new ADODB.Connection();
ADODB.Recordset rs = new ADODB.Recordset();
cnn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Dbfilename_nohind + ";", "", "", 0);
OleDbConnection oleConn2 =new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Dbfilename_nohind + ";");
////
oleCmd2 = oleConn2.CreateCommand();
oleCmd2.CommandText = strSQL;
oleAdp2 = new OleDbDataAdapter(oleCmd2);
oleAdp2.Fill(dts,"nohindata");
DataGrid1.SetDataBinding(dts, "nohindata");
追記: どうもこの辺り嘘ばっかり書いている気がする。
.NETだけでも1.1~4.0まで網羅できないしなぁ。
同じことでも、別な書き方が出来るみたい。
サンプル追っかけるだけで終わるのはイヤだな。
とりあえず拾ってくることまで出来た。
何でこんな簡単なことに時間がかかるんだ!
0 件のコメント:
コメントを投稿