- PR -

ADO.NET でODBC接続方法に関して

投稿者投稿内容
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2006-08-29 11:33
ADO.NETを利用してODBC接続を行いたいのですが、質問があります
接続の方法でADODB.ConnectionとOdbcConnectionを利用する場合でどのように違うのかが判りません。
ADODB.Connectionの接続例
Dim objCon As ADODB.Connection
Dim objRec As ADODB.Recordset
Dim strSQL As String
Dim lngExeCount As Long

objCon = CreateObject("ADODB.Connection")
objCon.Open("DSN=ODBC_NAME;UID=userid;PWD=password")
strSQL = "SELECT * FROM table1"
objRec = objCon.Execute(strSQL, lngExeCount)


OdbcConnectionの接続例
Imports System.Data.Odbc
Dim conn As OdbcConnection
Dim cmd As OdbcCommand
Dim reader As OdbcDataReader

conn = New OdbcConnection("DSN=ODBC_NAME")
conn.Open()
cmd = New OdbcCommand("SELECT * FROM table1", conn)
reader = cmd.ExecuteReader()

どちらでも接続できるのですが、どっちを利用していいのか判っていません。
ご存知の方がいらっしゃれば、ご教授願います
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-08-29 11:46
はて?ADODBなんてCOMでしょ。
昔の遺産じゃん。ADO.NETじゃない。

ADO.NETのODBCを選ぶだろうけどODBCよりかOleDBを選ぶかな。
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2006-08-29 13:50
ぶさいくろうさん、ありがとうございます。
回答をいただいた後でいろいろと調べてみたのですが、いまいちよく理解できませんでした
もう少し教えていただけますでしょうか?

・ADODBは昔の遺産と言うことですが、現在であれば使わないほうがいいということですね?

・ADO.NETのODBCと言われているのは、私がサンプルで書いたOdbcConnectionの接続例のことを指しているのでしょうか?

oledbでサンプルを作ってみたのですが、プロバイダの指定方法がわかりませんでした、
プロバイダには何を設定すればいいのでしょうか?
Imports System.Data.OleDb
Dim conn As OleDbConnection
Dim strDSN As String
Dim cmd As OleDbCommand
Dim strSQL As String

strDSN = "Data Source=tera;User ID=dwhrun;Password=dwhrun;"
conn = New OleDbConnection(strDSN)
conn.Open()
strSQL = "SELECT * FROM table1"
cmd = New OleDbCommand(strSQL, conn)

いろいろと質問して申し訳ございませんが、今回はODBCでしか接続できない環境ですので
どのような接続方法が一番適しているのかお知恵をお貸しください。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-08-29 14:32
引用:

Natsumeさんの書き込み (2006-08-29 13:50) より:

・ADODBは昔の遺産と言うことですが、現在であれば使わないほうがいいということですね?


すでに出ているように、ADODB は COM ですから使わない方が良いですね。
VB6 は参照カウント法で管理していたため、相性は良かったのですが、
同じ VB でも VB7 (VB2002) 以降の相性は最悪と思っても差し支えないでしょう。

COM を利用する場合は、自分ですべての参照を管理する必要があります。
非常に面倒くさい上に危険が伴うこともあります...

引用:

・ADO.NETのODBCと言われているのは、私がサンプルで書いたOdbcConnectionの接続例のことを指しているのでしょうか?


System.Data.* 以下の名前空間のテクノロジを ADO.NET と言います。
System.Data.Odbc.OdbcConnection クラスも当然 ADO.NET テクノロジです。

引用:

oledbでサンプルを作ってみたのですが、プロバイダの指定方法がわかりませんでした、
プロバイダには何を設定すればいいのでしょうか?


'何に' 接続するかによります。
また、プロバイダは調べればすぐ見つかりますよ。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2006-08-29 15:40
じゃんぬねっとさん、どうもありがとうございます
ADODBに関しては判りました。
oledbのプロバイダに関して調べていたところ
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemdatasqlclientsqlconnectionclasstopic.asp

ODBC データ ソースにアクセスするには、 OdbcConnection オブジェクトを使用します。このオブジェクトは、System.Data.Odbc 名前空間に存在します。
とありました。
今回はODBCでしか接続できないのですがOdbcConnectionでいいのでしょうか?
また、OleDbConnectionの場合のプロバイダは、udlファイルを作成してみたところ
Microsoft OLD DB Provider for ODBC Driversとありました(udlでの接続テストは成功しています)がこのことでいいのでしょうか?
質問ばかりで申し訳ございませんが、何卒ご教授願います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-08-29 15:49
引用:

Natsumeさんの書き込み (2006-08-29 15:40) より:

oledbのプロバイダに関して調べていたところ
>http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemdatasqlclientsqlconnectionclasstopic.asp


どうもリンク先が違うような...
こちらをご覧になった方がわかりやすいと思います。
引用:

今回はODBCでしか接続できないのですがOdbcConnectionでいいのでしょうか?
また、OleDbConnectionの場合のプロバイダは、udlファイルを作成してみたところ
Microsoft OLD DB Provider for ODBC Driversとありました(udlでの接続テストは成功しています)がこのことでいいのでしょうか?


実際に試した結果を信じるのが 1 番良いのではないでしょうか?
何を使用するのかは、Natsume さんが決めるべきことだと思いますよ。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2006-08-29 21:20
じゃんぬねっとさん、どうもありがとうございました。
どの方式にするかは、もう少し試してみます。

また、別件なんですが質問よろしいでしょうか?
ODBCで接続プールを利用したいので,調べていると

http://msdn2.microsoft.com/ja-jp/library/ms254502.aspx
接続プール機能を有効または無効にするには、[コントロール パネル] の [管理ツール] フォルダにある [ODBC データ ソース アドミニストレータ] を開きます。[接続プール] タブで、インストールされている各 ODBC ドライバに対する接続プール パラメータを指定できます。ODBC ドライバの接続プールを変更すると、その ODBC ドライバを使用するすべてのアプリケーションに影響します。

とありました、確かにODBCの設定画面のパフォーマンスモニタを有効にすればいいということだと思いますが、合っていますでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-08-29 21:37
引用:

Natsumeさんの書き込み (2006-08-29 21:20) より:

とありました、確かにODBCの設定画面のパフォーマンスモニタを有効にすればいいということだと思いますが、合っていますでしょうか?


残念ながら違います。

パフォーマンス モニタは、その名前どおりでプーリングとは関係ありません。
困った時や迷った時は、まずヘルプを見てみましょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)