连接SQL Server CE数据库的连接字符串

3
我正在尝试在Windows CE 5.0应用程序中与数据库建立连接,并使用Compact Framework 2.0。该数据库位于项目文件夹内:
C:\Documents and Settings\softdil\My Documents\Visual Studio 2008\Projects\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;";

我在这里做错了什么?

可能与正在调试(执行)移动设备上的应用程序有关吗?

我并不认为是这样,因为当应用程序加载时,数据库可以正常工作,这意味着它与列表框关联,并且可以从数据库正确地加载数据。

4个回答

6
在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文件,也许您已经有了一个连接字符串?


如果我没有手动创建,我是否有app.config文件?我在解决方案资源管理器中找不到它。 - rfc1484
不好意思,我忘了,但是CE不使用它们。不过,根据你的问题,你说你有数据,那么问题出在哪里? - H H
问题在于我试图连接到我的计算机中的数据库,但它却在搜索Windows CE终端,这就是为什么它没有被找到的原因。不管怎样,现在已经解决了。 - rfc1484

0

在数据源属性中给出DB文件的路径,并在App.Config文件中添加providerName。

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

0

以下是我修复的方法,假设其他人遇到相同问题。

当您在Visual Studio中将应用程序运行到Windows CE终端设备时,应用程序和数据库都会被复制到该设备上。因此,连接字符串必须使用与终端相关的URI,而不是与计算机路径相关的相对路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接