プロパティOleDbConnection
の戻り値から作成されたを開いているときに、予期しない例外がスローされました。OleDbConnectionStringBuilder.ConnectionString
を使用して、OleDbConnectionStringBuilder
相対DataSource
パスを絶対パスに更新していました。
呼び出すとSystem.Data.OleDb.OleDbException
例外が発生し、「初期化文字列の形式が OLE DB 仕様に準拠していません」OleDbConnection.Open
というメッセージが表示されます。.
コードは次のとおりです。
var oleDBbuilder = new OleDbConnectionStringBuilder(connectString);
oleDBbuilder.DataSource = ResolveDataSourcePath(oleDBbuilder.DataSource);
m_pOleDb = new OleDbConnection(oleDBbuilder.ConnectionString);
m_pOleDb.Open(); // <-- Throws exception here
値を含む接続文字列を処理しようとするまで、これに関する問題はありませんでしたMode=ReadWrite|Share Deny None;
。プロパティによって返される値は、OleDbConnectionStringBuilder.ConnectionString
引用符で囲まれた値を持つプロパティを返します。例えば:
この接続文字列 (変数 'connectString'):
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\SomePath\@Some Database.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=False
(OleDbConnectionStringBuilder.ConnectionString) になります:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source="c:\SomePath\Some Database.mdb";Persist Security Info=False;Mode="ReadWrite|Share Deny None"
引用符なしのMode
値はエラーなしで機能します!
いくつか質問があります。
- これは設計によるものですか?互換性のない値を返すのはなぜですか?
- のジョブを複製せずにこれを回避するにはどうすればよい
OleDbConnectionStringBuilder
ですか?