从 SQL Server CE 检索记录 [这个星球上有人可以解决这个问题吗??]
Posted
技术标签:
【中文标题】从 SQL Server CE 检索记录 [这个星球上有人可以解决这个问题吗??]【英文标题】:Retrieving records from SQL Server CE [is anybody on this planet can solve this issue??] 【发布时间】:2013-07-28 17:11:00 【问题描述】:我已将数据库包含在我的项目中(在根目录下)。
连接字符串
Data Source=|DataDirectory|\TSM_DB.sdf;Password=xxx;Persist Security Info=True;Max Database Size=512
TSM_DB.sdf
属性:
数据集属性:
构建操作 = 无 复制到输出目录 = 不要复制我的问题:
当我尝试将数据插入数据库时,它会插入到存在于 Debug 文件夹 中的数据库中,而不是插入到项目中包含的数据库中...
这就是为什么(显然)我的 select 语句在数据库中找不到任何记录(根据我的连接字符串)...
我认为查询(代码)非常好,但需要进行一些设置。
我该如何解决这个问题?
编辑:
Example Select Code (working : when connection string path is Absolute)
Try
Dim cnt_temp
Dim SQLquery As String
Dim myConString As String = My.Settings.TSM_DBConnectionString
con.ConnectionString = myConString
SQLquery = "SELECT * FROM tbl_outward"
Dim DA As SqlCeDataAdapter, Ds As New DataSet, Dtb As New System.Data.DataTable
DA = New SqlCeDataAdapter(SQLquery, con)
DA.Fill(Ds)
Dtb = Ds.Tables(0)
cnt_temp = Dtb.Rows.Count
MsgBox(cnt_temp)
con.Close()
Catch ex As Exception
MsgBox("Error..!", MsgBoxStyle.Exclamation)
End Try
【问题讨论】:
不,您的连接字符串包含 |DataDirectory|这是一个替换字符串,对于 WInForms 应用程序来说,在 Visual Studio 中运行时是 BIN\DEBUG 目录,而在程序独立运行时是当前目录。我认为您的选择查询有问题。请出示代码 @Steve:我的选择查询很好。可能是,问题出在数据库的选择上。我已经编辑了我的问题,请看.. 连接字符串的绝对路径对我来说是不可接受的,例如 Data Source=C:\Company\Software\TSM_DB.sdf;.....请建议,我该怎么办? 不,SELECT 似乎是正确的。我想插入使用相同的连接,那么您确定插入成功吗?能否展示一下 INSERT 方法的代码? ** 我的问题:当我尝试将数据插入数据库时,它会插入到 Debug 文件夹中存在的数据库中,而不是项目中包含的数据库中... ** 这是它应该如何与 |DataDirectory| 一起工作。如果要使用填充数据库部署项目,则需要将填充数据库复制到项目中。 【参考方案1】:当我尝试将数据插入数据库时,它会插入到 Debug 文件夹中存在的数据库中,而不是插入到项目中包含的数据库中...
这正是你告诉它要做的,也是你想要的。项目文件夹中的数据库是源代码的一部分。当您测试或调试代码时,更改的数据是您的测试或临时调试输出的一部分,而不是您的源代码。
当您测试您的代码时,您希望测试覆盖您的源代码吗?我希望不会,那会破坏你的资源;当你部署你的项目时,你通常不会部署你的源代码。您的数据也是如此;项目中的数据是应用程序的一部分,不是最终用户数据。当您安装应用程序时,您的源数据会安装到DataDirectory
,这是您的应用程序的一部分,而不是用户数据;用户甚至可能无法对其进行写入。
当您卸载或更新您的应用程序时,DataDirectory
将被卸载或更新。您不想对用户的数据这样做;如果每次更新 Microsoft Word 时都会删除驱动器上的每个 Word 文件,您会喜欢吗?如果 Word 将用户数据存储在其等效的 DataDirectory
中,就会发生这种情况。
DataDirectory
仅供您的应用私人使用。如果用户需要这些数据,您应该将其复制到不会被删除的用户可写位置,例如 Environment.SpecialFolder.ApplicationData
。
在this answer进一步解释。
【讨论】:
以上是关于从 SQL Server CE 检索记录 [这个星球上有人可以解决这个问题吗??]的主要内容,如果未能解决你的问题,请参考以下文章
Windows Phone SQL Server CE - 检索基础数据库架构以进行升级
检索 ODBC 表并插入 SQL Server CE 数据库