2009-11-24 165 views
2

我想爲我的手機6手機應用程序創建一個數據庫。我所做的是在視覺工作室,我去了我的項目名稱,並右鍵單擊它,去添加 - >添加新項目 - >數據 - >選擇數據文件。如何連接到Windows手機上的SQLite(CE)數據庫?

它創建了一個名爲「AppDatabase1.sdf」

現在我想連接到我的數據庫,但我不知道怎麼樣連接字符串,因爲我看不出有任何的app.config,我通常會在數據庫文件期待它。

所以我只是有

SqlCeConnection conn = new SqlCeConnection("Not sure what to put here"); 
conn.Open(); 

當我點擊服務器資源管理器選項卡我看到我的數據庫,所以我點擊它。在屬性部分,它有一些標籤爲「連接字符串」的東西,但它看起來像實際文件的路徑,當我在模擬器中運行它時,出現錯誤。

「無法找到數據庫文件 檢查數據庫的路徑。」

感謝

回答

2

您不必在應用程序之外創建數據庫。如果你有一個安全防護措施可能會更好,所以如果用戶意外刪除它或者它不存在,那麼你可以輕鬆地重新創建它。這對初始安裝很有用。下面的代碼會做你想做的(SQLCE/Mobile 2005例子):

Private Sub ConnectToDB() 
     If (File.Exists("\SystemCF\LPI\inventory.sdf")) Then 
      Try 
       cn = New SqlCeConnection("Data Source=\SystemCF\LPI\inventory.sdf;Password=") 
       cn.Open() 
      Catch ex As Exception 
       MessageBox.Show(ex.Message) 
      End Try 

     ElseIf (File.Exists("\UserCF\LPI\inventory.sdf")) Then 
      Try 
       cn = New SqlCeConnection("Data Source=\UserCF\LPI\inventory.sdf;Password=") 
       cn.Open() 
      Catch ex As Exception 
       MessageBox.Show(ex.Message) 
      End Try 

     Else 
    Try 
     If (Not (Directory.Exists("\SystemCF\LPI"))) Then 
       Directory.CreateDirectory("\SystemCF\LPI") 
     End If 

     Dim engine As New SqlCeEngine("Data Source=\SystemCF\LPI\inventory.sdf") 
     engine.CreateDatabase() 

     cn = New SqlCeConnection("Data Source=\SystemCF\LPI\inventory.sdf") 
     cn.Open() 

     Call dropAndCreateDatabase() 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
     MessageBox.Show("Unable to create database!", "Database Create Failed") 
    End Try 
End Sub 
0
SqlCeConnection connection = new SqlCeConnection(); 
connection.ConnectionString = "Data Source =" + filename + ";password=" + password; 
connection.Open(); 

當然,password=<password>部分只有當你保護的數據庫,這是不是默認的情況下需要。

順便說一句,這不是SQLite,它是SQLServer CE(或簡稱SQLCE)。

編輯:如果您只指定文件的名稱(無路徑),請確保該文件位於當前工作的目錄中。顯然,根據錯誤消息,您指定文件名的方式有些問題。我敢打賭,只要指明它,你就應該前進。

EDIT2:爲了檢查問題出在你的程序中還是在DB文件中,download DataPort Console並用它在設備中打開你的DB。那樣你可以驗證你的數據庫可以正確訪問。

+0

啊。我們正在尋找我看到SqLite的答案,並認爲它可能是另一個名字。無論如何,我不認爲我有密碼,我做了這個SqlCeConnection conn =新的SqlCeConnection(「數據源= AppDatabase1.sdf」);但我仍然無法連接數據庫。 – chobo2 2009-11-24 17:29:44

+0

查看我編輯的答案 – 2009-11-24 18:21:10

+0

有沒有特殊的文件夾?礦在我的項目的根目錄。 – chobo2 2009-11-24 23:01:48