如何连接到Windows手机上的SQLite(CE)数据库?

问题描述:

我想为我的手机6手机应用程序创建一个数据库。我所做的是在视觉工作室,我去了我的项目名称,并右键单击它,去添加 - >添加新项目 - >数据 - >选择数据文件。如何连接到Windows手机上的SQLite(CE)数据库?

它创建了一个名为“AppDatabase1.sdf”

现在我想连接到我的数据库,但我不知道怎么样连接字符串,因为我看不出有任何的app.config,我通常会在数据库文件期待它。

所以我只是有

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

当我点击服务器资源管理器选项卡我看到我的数据库,所以我点击它。在属性部分,它有一些标签为“连接字符串”的东西,但它看起来像实际文件的路径,当我在模拟器中运行它时,出现错误。

“无法找到数据库文件 检查数据库的路径。”

感谢

您不必在应用程序之外创建数据库。如果你有一个安全防护措施可能会更好,所以如果用户意外删除它或者它不存在,那么你可以轻松地重新创建它。这对初始安装很有用。下面的代码会做你想做的(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 

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