1read 100read
2011年10月1期データベースADO DAO など接続方法について
TOP カテ一覧 スレ一覧 削除依頼 ▼
・ 次のスレ
彼女にINSERT権限がありません Oracleがベンチマーク結果を隠したがる理由 SQL Serverが1本8,800円(当社比:約90%値下げ) データベース雑誌・書籍
ADO DAO など接続方法について
1 :03/07/24 〜 最終レス :11/09/29 でわ どうぞ
2 : 2ゲッツ ADO使ってまつ。
3 : 3ゲッツ いまだにDAO使ってまつ。
4 : 4ゲッツ 挙動不審。
5 : 5ゲッツ 昔、RDO使いました。
6 : ODAはどうですか?
7 : ADOは便利で良い
8 :
9 : とりあえず触り始めるなら何から始めるのがいいの?
10 : とりあえずならEXCELとか
11 : つうか、>1 は「ミドルウェア」という言葉を知らんのか。
12 : ∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ
13 : OLE DB との関係を知りたい。
14 : (⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
15 : ADO2.7は完成に近いな ADO.NETはベータ版といっても過言ではない(w
16 : MDB ファイルにアクセスするためのOLE DB のプロバイダとして、 次の3つがあるらしいんですが、どれを選べばいいんでしょうか? Driver do Microsoft Access (*.MDB) Microsoft Access Driver (*.MDB) Microsoft Access-Treiber Driver (*.MDB)
17 : 長瀬愛ちゃんがセーラー服姿で大奮闘!小さな身体にルーズソックスがよく似合います。 お得意の騎上位での腰振りは必見です!!今すぐサンプルムービーで確認だ! http://66.40.59.77/index.html
18 : >16 Microsoft Access Driver (*.MDB) かな これしか使ったことないや
19 : VB6からADO使うとき 参照設定を使います? それともCreateObjectしてます? それぞれのメリット、デメリットを教えてください。
20 : >19 アーリーバインディング、レイトバインディングについてぐぐれば自ずと答えは見つかるであろう。 もしくは、マ板VBスレかな。
21 : >20 さんきゅ その辺はなんとなくはわかっている。 確かにここで聞く内容ではないかもしれないが... 参照設定でADO2.7を指定したとして コンパイルしたものを動かす時にADO2.8が入っていたら 使われるのはどっち? あと、この場合にCreateObjectなら最新の2.8が使われる?
22 :
23 : DAOのころは、参照設定で3.5を指定しといて 実行環境に3.6しか無かった場合、FormatとかLeft関数で固まるというのが定番だったが。 んで、結局CreateObjectに書き換えるハメになり、参照設定の存在意義に激しく疑問を持ったりする。 ADOも同じでは?
24 : Accesss 2002 以降では、 DAO まったくつかわずにすむ? たとえばタイトルバーの変更って出来る? ACCESS総合相談所 その9 http://pc2.2ch.net/test/read.cgi/bsoft/1061828549/324-326
25 : MDB ファイルにおいて、フォームに関連付けられたレコードセットは Access 2000 では DAO の Recordset ですが、 Access 2003 では ADO の Recordset に変わっているのでしょうか?
26 : How to Bind Microsoft Access Forms to ADO Recordsets http://support.microsoft.com/default.aspx?kbid=281998 Access 2000 ADO Traps Watch out for these ADO inconsistencies. By Ken Getz, Technical Editor http://vbadvisor.com/Articles.nsf/dp/8B65AB3EFB722D70882568A7001BEDE3
27 : 1) フォームの Recordset プロパティには ADODB.Recordset も DAO.Recordset も 突っ込むことが出来る。ただし、ADO.Recordset を突っ込んだ場合は、その インスタンスが MSDataShape / SQL Server OLEDB プロバイダで開かれている場合しか データの更新を行うことが出来ない。 2) Access 2002 以降では、他の OLEDB プロバイダで開かれている ADODB.Recordset のインスタンスをフォームの Recordset プロパティに代入した場合であっても、 データの更新を行うことが出来る。 ただしその Recordset インスタンスが unique はインデックスを含んでいなければならない。もちろん主キーでもいい。 ということらしい。
28 : OLEDB サービスプロバイダとして、 MSDataShape というのがありますが、 データシェイプというのはいったいどういう機能なのでしょうか? http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpado260/htm/mdmscrequiredprovidersfordatashaping.asp そもそも OLE DB 技術におけるサービスプロバイダとデータプロバイダの区別がよくわかっていません。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpado260/htm/mdrefmsdatashape.asp データプロバイダ 直接、またはサービス プロバイダを介して ADO アプリケーションにデータを公開するソフトウェア。 サービスプロバイダ データの作成や利用によってサービスをカプセル化し、 ADO アプリケーションの機能を拡張するソフトウェア。 プロバイダは、データを直接公開する代わりにクエリ処理などのサービスを提供します。 サービス プロバイダは、データ プロバイダによって提供されたデータを処理します。
29 : SQL Server に接続するときの ADO における接続文字列は次のようになります。 Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pubs;Data Source=bsas http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9910/db_solu/ によると、サービスプロバイダとして MSDataShape を利用したときの接続文字列は次のようになります。 データプロバイダが SQL Server の場合 Provider=MSDataShape.1;Persist Security Info=True;Locale Identifier=1033;Data Source=bsas;User ID=sa;Password="""";Initial Catalog=order;Data Provider=SQLOLEDB.1 データプロバイダが Jet データベースエンジンの場合 Provider=MSDataShape.1;Persist Security Info=False;Data Source=order;Data Provider=MSDASQL MSDataShape を使うときには別途 Data Provier を指定しなければなりませんが、 これはどのようなプロバイダでも指定できるのでしょうか?
30 : プロバイダに結合を任せるとき グリッドコントロール等で階層表示させるときに使う
31 : みんな ADO Recordset で Collectメソッドって使ってる? rs.Fields(xxx).Value と書くより rs.Collect(xxx) と書く 方が速いらしい。 http://www.microsoft.com/japan/msdn/data/techmat/mdac/impperf.asp の2.5
32 : >>27 > 1) フォームの Recordset プロパティには ADODB.Recordset も DAO.Recordset も > 突っ込むことが出来る。ただし、ADO.Recordset を突っ込んだ場合は、その > インスタンスが MSDataShape / SQL Server OLEDB プロバイダで開かれている場合しか > データの更新を行うことが出来ない。 Access 2000 で ADODB.Recordset のインスタンス x を フォームの Recordset プロパティに代入するには、 x が adOpenStatic で開かれている必要があります。
33 : >>32 とうぜん、 adOpenStatic で開いているわけですから、 更新は不可となります。
34 : ADO.NETを勉強しています。
35 : ADO の接続文字列って、結局のところ UDL ファイルの中身と同じなんですよね? つーか、UDL ファイル = ADO の接続文字列 と思っていいんでしょうか?
36 : 汎用データ リンク (.udl) ファイルの作成と設定 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vsintro7/html/vxtskCreatingConfiguringUniversalDataLinkFiles.asp?frame=true 汎用データ リンク (.udl) ファイルを使用するためのデータ コントロールの設定 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vsintro7/html/vxtskConfiguringDataControlstoUseUniversalDataLinkFiles.asp?frame=true あちゃ、ここに書いてありました。そのまんま。 .NET Framework 開発者ガイド ADO.NET での OLE DB データ ソースへの接続 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconconnectingtooledbdatasourceusingadonet.asp?frame=true ADOからEXCELを検索する方法 http://www.fitweb.or.jp/~imai/developer/02021001.html ここも参考になるかもしれない。 http://tuka.s12.xrea.com/index.xcg?page=UDL
37 : ちょっと気になって、 UDL ファイルが何に関連付けられているか調べてみた。 [HKEY_CLASSES_ROOT\.UDL] @="MSDASC" だって… MSDASC ってなんじゃい…
38 : で、MSDASC 自体はこんな感じ。 [HKEY_CLASSES_ROOT\MSDASC] @="Microsoft Data Link" [HKEY_CLASSES_ROOT\MSDASC\CLSID] @="{CCB4EC60-B9DC-11D1-AC80-00A0C9034873}" [HKEY_CLASSES_ROOT\MSDASC\DefaultIcon] @="C:\\Program Files\\Common Files\\System\\Ole DB\\oledb32.dll,0" [HKEY_CLASSES_ROOT\MSDASC\shell] [HKEY_CLASSES_ROOT\MSDASC\shell\open] [HKEY_CLASSES_ROOT\MSDASC\shell\open\command] @="Rundll32.exe C:\\PROGRA~1\\COMMON~1\\System\\OLEDB~1\\oledb32.dll,OpenDSLFile %1" [HKEY_CLASSES_ROOT\MSDASC\shellex] [HKEY_CLASSES_ROOT\MSDASC\shellex\ContextMenuHandlers] [HKEY_CLASSES_ROOT\MSDASC\shellex\ContextMenuHandlers\{2206CDB2-19C1-11D1-89E0-00C04FD7A829}] [HKEY_CLASSES_ROOT\MSDASC\shellex\PropertySheetHandlers] [HKEY_CLASSES_ROOT\MSDASC\shellex\PropertySheetHandlers\{2206CDB2-19C1-11D1-89E0-00C04FD7A829}]
39 : MSDASC.HLPを読むのだ
40 : >>39 え?なにそれ?そんなもんが…探してみる。
41 : ADOってAccess入れないと使えないんですか? 入れなくても使えるならどのDLLを取り込めばいいかきぼんぬ。
42 : >>41 MDACってヤツをMSDNオンライソで探せ
43 : >>41 OSにもよるが、2000/XPには標準で入ってる。 C:\Program Files\Common Files\System
44 : ADO.NETってどうなんでつか
45 : Microsoft SQL Server 2000 Desktop Engineを使うために ADO.NETによるデータベースの操作を今即席で覚えたところです。 取り合えず使えそう。
46 : VS.NETから使う場合って ADOを使った方が良い場合もあるの?
47 : サーバカーソルが無いって聞いたけどマジで?
48 : ADOとADO.NETを使い分けるって事??
49 : ADO.NETってどうなん?
50 : ADO.NETってどう
51 : oo4o てどう
52 : ADO.NETを卒研で使ってみました。 感想は普通です。
53 : ADO.NETは、DataSetが面白い。 XMLを使ってみたいときなら、これだね。
54 : ADO>RDO>>>>>>>>ADO.NET
55 : DAOが泣いた
56 : >>54 ODBC>ADO>RDO>>>>>>>>ADO.NET ODBC API をCで直接叩くと速いぞ。
57 : DAOがまた泣いた
58 : >>54 ADO.NET>ODBC>ADO>RDO>>>>>>>>ADO.NET(ODBC) ODBCならADO.NETはのろい。専用のデータプロバイダ使うと速いぞ。
59 : >>21 2.8は使われない。ADOは バージョンが違うと別製品。 エラーがでるよ。
60 : 専用データプロバイダってSQLServer以外あるの?
61 : OO4OO
62 : ODP.NET
63 : >>59 2.6までしか入ってない環境で 2.7を指定したプログラム動かしてもエラー出ないよ
64 : .NET の専用データプロバイダ。最初から付いているのは、SQLServer用と Oracle用だけ。 他の主なやつ == MySQL, SQLite, PostgreSQL, Firebird など == が探せばある。 ODBC から使うより、SQLite なんて50倍以上(当社比)やたら速くなった。
65 : >>21,63 スマンカッタ。 ADOのコンポーネント (Connection等)は VersionIndependentProgIDが指定されてるな。 バージョン依存はないね。 (ただし、バージョン特有のメソッドを使うとアウト) はバージョンが違うとアウトなのはDAOだな (たしか、コンパチブルバージョンあったが...)
66 : あれ?いやいや、参照設定(アーリーバインド)してると ヤパーリ、エラーが出ると思うんだが... VBならVersionIndependentProgIDで指定されている 名前(ADODB.Connection)で CreateObjectで生成すれば、バージョン依存はないと思う。 >>63 の環境は2.7で指定してても そうやってConnectionを生成してない? Dim con as ADODB.Connection ←エラー ↓例え違うバージョンをしてもエラーにはならない Dim con as Object Set con = CreateObject("ADODB.Connection") オレの認識違ってたかな?
67 : s/↓例え違うバージョンをしてもエラーにはならない ↓例え違うバージョンを指定しても、オブジェクトを使わなければ エラーにはならない。
68 : 何度もスマン。 生成するなら Dim con as New ADODB.Connection だな。 つかCreateObjectで生成するなら 参照設定自体もいらないな。
69 : 確かに動いてるのだが・・・ <VB> 参照設定で Microsoft ActiveX Data Object 2.7 Library にチェック Connectionは次のように宣言してる Dim l_conObj As New adodb.Connection <実行環境> MDAC2.6 普通に動いてます。 今までバージョンの違いでエラーになった事はないです。
70 : >>69 実行環境にOfficeがインスコされてない? Officeでもインスコされるし... 実行環境で(VBの開発環境や、 OfficeのVBエディタの参照設定で) 2.7がインスコされていないと確実に確認しているのなら、 オレの認識が違っていたよ。 そういえば以前、確かに2.5で参照設定したプログラムを、 2.1しか入っていない実行環境で動かしたとき、 エラーが出た記憶があったけど、2.7からは違うのか。 記憶違いだったかなあ。
71 : 試してみた。(ちょうどマシンがあった) ADO2.7で参照設定させたプログラムを ADO2.6ではないけど、ADO2.5まで しか実装されていない実行環境で動かしたら 「ライブラリが見つかりません。」 と出たよ。
72 : >>70 Microsoft の出してる MDACのバージョンをチェックできるツール(Component Checker 2.0)で チェックしても 2.6SP1でした。 何か見落としてるのかなぁ...
73 : >>72 Officeのインストールや他の製品、アプリの インストールにより単体でADOがインストール される場合もある。 MDACのバージョンチェックするより、 >>70 で書いてあるような方法や実際の ライブラリファイルの存在をチェックした方 が確実。 さらに、ADOを使わせるアプリを配布するなら 同バージョンのMDACと一緒に配布するような 運用にした方がいい。 COMは便利だがその辺りの管理が大変 なんだよな...
74 : ADO.NETのDatasetで今までと同等の排他を実現する方法がわからん・・・そろそろSEになるべきか
75 : おぃおぃ、排他制御の分からないSEって怖杉。
76 : .com
77 : B'z BANZAI いい曲だよ
78 : データプロバイダ 直接、またはサービス プロバイダを介して ADO アプリケーションにデータを公開するソフトウェア。
79 : ADO.NETで開発してるんだけど、本読んでもいまいちピンと来ない いままでAccess使ってたけど、Accessはまだ何とか思う様に使えてた VB.NET+ADO.NETは今までの感覚で使おうとするとイメージがわかない もっと実務的な説明をした本とかサイトとかない? そもそもADO.NETってどれくらい使われてるの?
80 : Accessの方がむしろ特殊だろ。インターフェースと データベースがごっちゃになってる方が気持ち悪いよ。 早いとこ、プログラム言語+DBMSという当たり前の 構文に慣れてくださいね。
81 : >>80 おまいOODBはどうすんだ?
82 : MSDE2kにDBをこさえてVB6(ADO)で繋いでいるのですが、 mdbファイルを扱うときに便利に使っていた Index を用いた Seek が出来ません。 Supportメソッドでチェックしても、Index/SeekともにFalseです。 そういうモノなんでしょうか? MSのサイトを探しても明確な説明を見つける事が出来ませんでした。 Googleも彷徨いましたが同じ結果でした。 サポートの不可情報を示したポインタをご存じでしたら教えて下さいです。
83 : Seekはmdb専用
84 : VBでADO使ってますが、 ADO 2.7 はwindows98では動かせないの? 今はXPは2.7 win98は 2.0を使って別々にBuildしている。 XPでADO2.0を参照してbuildしても動作しないし、よくわからん。
85 : >84 つ[ Dim x as Object: Set x = createObject("ADODB.foobar") ]
86 : ADO2.7をダウンロードしてインストールしたら WIN98でも動くようになりましたよ。 >85 CreateObjectだと Command、Recordset、Connectionに全部グローバルにしてクリエートしないと いけないでしょ。おまけに参照をしないと、CursorPositionなんかの パラメータが、UNKNOWNになるし、、、結局参照をしないといけんでしょ。 CreateObjectでやるメリットがわからん。
87 : とりあえず、アーリーバインディングとレイトバインディングについて勉強しる。
88 : >86 > CreateObjectだとCommand、Recordset、Connectionに全部グローバルにしてクリエートしないと そうかな?自分はとりあえず使う関数内で個別に持たせたりしてるけど、まずいかな。 CreateObject だと、自動的に現地にあるものをバインドしてくれるから参照設定とかしなくて いいので楽チンでええのね。 まあバージョン違いで動かないこともあるかもしれないけど、それはアーリバインディングでも 同じだし(バージョン相違を検知できると言えばメリットだけど…) 自分は VBScript か Access2000 VBA 使ってるから、前者はレイトバインディングのみ、 後者は ADOX とかをアーリバインディングで使うと参照設定してない環境でエラー吐くから (はじめてでた時は「なんで date 関数しか使ってないところでエラーが…」とちと焦った)、 はじめから参照されてる ADO とかだけアーリバインディングで、ADOX や EXCEL とかは 開発中は参照設定しておいて、あらかたできるといちいち Dim objHoge as obj(ry とかしてみたり。 >87 こんなページ見つけた。難しいことは分からないけど、EBならデバッグが簡単で実行が速い、 LBなら多少バージョンとかが違っても適当にバインドしてくれるけど実行が遅いと言うことなのかな。 ttp://edocs.beasys.co.jp/e-docs/wls/docs81/jcom/overview.html#1107478
89 : CreateObjectだと「この環境では使えません」的なエラー メッセージを出すのが楽だしな。Loopの中で毎回Createobject でもしない限り、早さも大して変わらんよ。 っていうかみんなADO派なの? おいらは今までDAO派だ。環境絡みのトラブルが少ないのと、 以前は大量の更新処理で明らかにレスポンスが良かったから。 (最近は違うのかな?)
90 : >89 自分は DAO は Access(Jet) 特化で ADO は汎用と聞いたので、 「なら ADO のほうが使いまわしができて得そうだ」と ADO に転んだのでした。 実際に使ってみるとたいていの操作は ADO でできるし、DAO がいると 思ってたメタデータの操作も ADOX でできる、ということで DAO は あまり良く知らなかったり。 どうでもいいけど ADODB.Command のパラメタクエリを使うと手軽に SQL Injection 攻撃を回避できると聞いたのだけど、これって更新可能な RecordSet を取得したいときはどうするんだろう?
91 : ADOでJetにINSERTしようとしたら、 日付/時間型がどうしてもエラーになる。 JetだとDAOのほうが無難なのかな?
92 : 日付を # で囲んでないとか?
93 : >>92 囲っても駄目。 項目名がSQLの予約語と同じ場合もこけます。 DAOに比べて制約が多いような感じ。
94 : こちらの Win2000SP4+IE6SP1 の環境では以下の SQL で正常にテーブル作成、挿入、選択できたけれど。 プロバイダは Microsoft.Jet.OLEDB.4.0 で、HTA(VBScript) から CreateObject("ADODB.Connection") で ADODB.Connection の生成を行い、 Connection.Execute で実行。 --- CREATE TABLE hoge( foo datetime, [long] datetime ); insert into hoge(foo, [long]) values(#2004/06/12#, #2003/12/12#); select * from hoge; ---
95 : いろいろやってみて何とかVB.NET+ADO.NETが理解できるようになった。 自分のプログラミングスタイルみたいなものもできてきた。 しかしやっぱりADOでやってたときより手続きが多くて面倒に思う。 やってることはADOのときと変わらないのかもしれないが、 データセットへの読み込みと更新のタイミングを意識しないといけなかったり 考えることが多いように思う。
96 : テーブルの抽出時のようにインデックスを使ってADOのレコードセットの検索や抽出を 高速にすることはできますか? テーブルにインデックスを設定しても rs.Supports(adIndex) はFalseになってしまいます。 rs.Index = "hoge" でエラーは出ないのですが速くはなりませんでした。 元々やりたかったのは、VBのDBグリッド上に全データを表示した状態で検索して 見つかったらその行に移動してハイライト表示、ということがやりたいのです。 (Accessのテーブル上で検索するようなイメージです)
97 : これを日本および海外で広めると病気が治るかもしれない。 オラウータンなどの サルは自分と似ていない自分の子供を(子しする)す。 (立花隆『サル学の現在』平凡社より) http://www.google.co.jp/search?q=cache:YzJwPXsiJZAJ:www.impala.jp/bookclub/html/dinfo/10110005.html+%E3%82%B5%E3%83%AB%E5%AD%A6%E3%81%AE%E7%8F%BE%E5%9C%A8%E3%80%80%E5%AD%90%E6%AE%BA%E3%81%97&hl=ja
98 : >>95 俺はループ文が減ってかなりすっきりしたが。 データセットは無視してデータテーブルしか使ってないが。
99 : ODP.NETは?
100read 1read
1read 100read
TOP カテ一覧 スレ一覧 削除依頼 ▲
・ 次のスレ
彼女にINSERT権限がありません Oracleがベンチマーク結果を隠したがる理由 SQL Serverが1本8,800円(当社比:約90%値下げ) データベース雑誌・書籍