- PR -

VB.NETからデータベースパスワード付きAccessへの接続

1
投稿者投稿内容
もん
会議室デビュー日: 2007/11/06
投稿数: 6
投稿日時: 2007-11-19 23:42
毎々お世話になります。
VB.NETからデータベースパスワード付きAccessへの接続ができず困っております。皆様のお力をお貸しください。
現在、
Windows XP
Access 2003
Visual Studio 2005 Professional Edition
で開発を行っています。

データベースパスワードが設定されているmdbファイルに対して
OleDbConnectionで接続すると、Open実行時にOleDbExceptionがthrowされ、
「パスワードが正しくありません。」のメッセージが検出されます。
他サイトで類似案件を見かけましたが、根本的な解決には至らず、
mdbファイルを再作成することによって解決したことになったようです。
(参考元:http://vsug.jp/tabid/63/forumid/72/postid/7635/view/topic/Default.aspx)

しかし、当方ではmdbファイルを再作成しても上記エラーを回避できません。
また、mdbを直接開く場合は、データベースパスワードを入力することで問題なくテーブルを使用できます。
指定しているConnectionStringは以下の通りです。
Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=mdbファイルパス;
Persist Security Info=False;
Jet OLEDB:Database Password=パスワード;

なお、サーバエクスプローラを使用した場合でも、接続できません。同様のエラーが発生します。
解決のヒントを是非ご教授ください。どうかよろしくおねがいします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-11-20 01:34
とりあえず、実際のミニマム コードを記述してください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
もん
会議室デビュー日: 2007/11/06
投稿数: 6
投稿日時: 2007-11-20 22:55
じゃんぬねっと様お忙しい中レスありがとうございます。
以下にコードを示します。

Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
Dim DBConn As OleDbConnection
Dim DBReader As OleDbDataReaderTry
Try
System.Windows.Forms.Cursor.Current = _
System.Windows.Forms.Cursors.WaitCursor
Dim ConnString As New StringBuilder
ConnString.Append("Provider=Microsoft.Jet.OLEDB.4.0;")
ConnString.Append("Data Source=D:\MyDB\DB.mdb;")
ConnString.Append("Persist Security Info=False;")
' データベースパスワードがDBPassのmdbへアクセス
ConnString.Append("Jet OLEDB:Database Password=DBPass;")
DBConn = New OleDbConnection(ConnString.ToString)

DBConn.Open <--- ここで例外発生

' データ取得処理
DBReader = …

' close
DBReader.Close
DBConn.Close

Catch ex As Exception
MsgBox(ex.Message)
Finally
System.Windows.Forms.Cursor.Current = _
System.Windows.Forms.Cursors.Default
End Try
End Sub


以上よろしくお願いします。
もん
会議室デビュー日: 2007/11/06
投稿数: 6
投稿日時: 2007-11-20 22:55
じゃんぬねっと様お忙しい中レスありがとうございます。
以下にコードを示します。

Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
Dim DBConn As OleDbConnection
Dim DBReader As OleDbDataReaderTry
Try
System.Windows.Forms.Cursor.Current = _
System.Windows.Forms.Cursors.WaitCursor
Dim ConnString As New StringBuilder
ConnString.Append("Provider=Microsoft.Jet.OLEDB.4.0;")
ConnString.Append("Data Source=D:\\MyDB\\DB.mdb;")
ConnString.Append("Persist Security Info=False;")
' データベースパスワードがDBPassのmdbへアクセス
ConnString.Append("Jet OLEDB:Database Password=DBPass;")
DBConn = New OleDbConnection(ConnString.ToString)

DBConn.Open <--- ここで例外発生

' データ取得処理
DBReader = …

' close
DBReader.Close
DBConn.Close

Catch ex As Exception
MsgBox(ex.Message)
Finally
System.Windows.Forms.Cursor.Current = _
System.Windows.Forms.Cursors.Default
End Try
End Sub


以上よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-11-21 10:16
問題なさそうに見えますね。
User ID = Admin; 問題かな...?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-11-21 11:24
パスワードを一旦外してみるとか、違うものに変えてみるとか・・・
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
もん
会議室デビュー日: 2007/11/06
投稿数: 6
投稿日時: 2007-11-21 23:35
じゃんぬねっと様、R・田中一郎様レスありがとうございます。
>じゃんぬねっと様
User ID = Admin;Password="";の指定も試しては見ましたが、変化は見られませんでした。
>R・田中一郎様
パスワードを解除した状態の場合は問題なく接続できます。
しかし異なるパスワードを与えてみたり、mdbそのものを作り直してみても特段変化はありませんでした。
最初の投稿でも記述したように、サーバエクスプローラを使用した場合でも、接続できません。このあたりも何か関連しているのでは…という気がするのですが…

別マシンに同じ環境を作ってみたりもしましたが、まったく同じ現象です。
ODBCでOracleなどには問題なく接続できているのに、Accessに単純な接続ができないなんて…
機能上、データベースパスワードのないmdbは採用できません。
テーブルオブジェクトの非表示などで、テーブルが安易に触れないようにはしていますが
設定をいじればたやすく表示できるので適切な方法とは言えません。
引き続き皆様のレスをお待ちしております。どうかよろしくお願いします。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-11-22 09:40
引用:

未記入さんの書き込み (2007-11-21 23:35) より:

>User ID = Admin;Password="";の指定も試しては見ましたが、変化は見られませんでした。



ん?
上記はパスワードが空ですよね?

引用:

未記入さんの書き込み (2007-11-21 23:35) より:

パスワードを解除した状態の場合は問題なく接続できます。



という部分との関連性がよくわかりませんでした。

引用:

未記入さんの書き込み (2007-11-21 23:35) より:

最初の投稿でも記述したように、サーバエクスプローラを使用した場合でも、接続できません。このあたりも何か関連しているのでは…という気がするのですが…



逆に根本的な原因が同じで、双方とも同じように接続できないという考え方の方が自然ですよね。
サーバーエクスプローラーを使った場合の動作との動作は一致しているんですか?

つまり、パスワードを外すと接続できるとかできないとか、別のファイルならどうとか・・・

まずは、この辺りの問題の切り分けをした方が良さそうです。
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
1

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