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" />