2

我試圖建立在Windows CE 5.0的應用程序與數據庫的連接,我使用的是Compact Framework 2.0中連接字符串與SQL Server CE數據庫

的數據庫位於該項目的文件夾內:

C:\ Documents和Settings \ softdil \我的文檔\ Visual Studio 2008的\項目\ Datalogic的\ Datalogic的

這是我使用,以連接並打開數據庫行:

SqlCeConnection conn = new SqlCeConnection(); 
conn.ConnectionString = "Data Source = Datalogic.sdf;"; 
conn.Open(); 

這給我一個漂亮的「數據庫文件未找到」錯誤消息。

我也試圖與絕對URI具有相同的結果:

conn.ConnectionString = "Data Source = C:\\Documents and Settings\\softdil\\My Documents\\Visual Studio 2008\\Projects\\Datalogic\\Datalogic;"; 

什麼我錯在這裏做什麼?

可能與移動設備中正在調試(執行)的應用程序有關嗎?

我不這麼認爲,因爲數據庫在加載應用程序時工作,這意味着它與一個列表框相關聯並從數據庫正確加載數據。

回答

5

在我們使用以下方法來得到執行文件的完整路徑的Win CE的應用程序:

string StartupPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); 

使用StartupPath可以再加入你的數據庫名稱,這條道路,並將其添加到連接字符串:

string datalogicFilePath = Path.Combine(StartupPath, "Datalogic.sdf"); 
string connectionString = string.Format("DataSource={0}", datalogicFilePath); 
1

你將不得不使它適用於WinCE,我認爲你的目標上沒有C:\\Documents and Settings\\

我真的不這麼認爲,因爲數據庫工作時...

看着你App.Config中,也許你已經有了的ConnectionString?

+0

如果我沒有手動創建它,我有一個app.config嗎?我沒有在我的解決方案資源管理器中看到它。 – rfc1484

+0

不,我忘了,但CE沒有使用它們。儘管如此,在你的問題中,你說你有數據,那麼問題是什麼/哪裏? –

+0

問題是我試圖連接到我的電腦中的數據庫,但它在Windows CE終端中搜索,這就是爲什麼沒有找到它。無論如何,它現在是固定的。 – rfc1484

0

這是我如何修復它,以防萬一任何人碰巧遇到同樣的問題。

當您在Visual Studio中將應用程序執行到Windows CE終端設備中時,應用程序將被複制到那裏,並且還會複製數據庫。所以連接字符串必須使用與終端相關的uri,而不是相對於計算機中的路徑。在數據源屬性DB文件和

0

給路徑添加的providerName在app.config文件

<add name="Keyname" connectionString="Data Source=DBPath\Database1.sdf" providerName="Microsoft.SqlServerCe.Client.3.5" />