2013-01-24 41 views
1

我們如何創建一個使用C#編程動態連接字符串到Microsoft Access?我嘗試以下響應代碼 -創建MS-訪問連接字符串動態

OleDbConnection con = new OleDbConnection(); 
String path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + path + "\\nik.mdb"; 

我得到了這樣的結果:

Format of the initialization string does not conform to specification starting at index 55. 

當我編輯字符串,它看起來如下:

Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Users\nikhil\desktop\nik.mdb 

在此先感謝。

+4

「但得到了一個錯誤。」 - 這就是,所以....翔實.... –

+0

@MitchWheat我應該打印我得到了錯誤???? – user1929236

+4

不,這是更多的樂趣,如果我們有猜測.... –

回答

2

使用Path.CombineOleDbConnectionStringBuilder創建一個有效的連接字符串:

var conString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}" 
          , Path.Combine(dir, "nik.mdb")); 
var conBuilder = new OleDbConnectionStringBuilder(conString); 
using (var con = new OleDbConnection(conBuilder.ConnectionString)) 
{ 
    // ... 
} 

也許你在連接字符串中的空格。

更新既然你編輯你的問題,並提供您的連接字符串。 OLEDB.4.0;Data之間有一個空格。這可能是你的例外的一個可能的原因。然後ConnectionStringBuilder幫助。

+0

我剛剛在LINQPad中測試過,它對我來說工作正常。在'4.0;'和'Data Source'之間使用空格似乎也沒有區別。 – mellamokb

+0

@mellamokb:不知道這是否會導致問題。但是當我用連接字符串使用生成器時,它將刪除空格。所以這只是一個瘋狂的猜測,但至少它應該有助於提高可讀性並減少錯誤傾向('Path.Combine','using-statement')。 –

+0

同意。在我看來,連接字符串實際上缺少一條核心信息。 http://connectionstrings.com/access顯示可能需要工作組數據庫或密碼。我並不需要在我的測試數據庫中,但是一些數據庫使用工作組安全設置。 – mellamokb