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%値下げ)
データベース雑誌・書籍