C# sql连接字符串问题

C# sql连接字符串问题,c#,.net,sql,windows-mobile,compact-framework,C#,.net,Sql,Windows Mobile,Compact Framework,我有一个*.sdf文件中的数据库(compact sql server)。 我将compact framework项目转换为常规pc项目,出于某种原因,使用相同的代码和相同的*.sdf文件,引发了以下异常: “文件名无效。请检查数据库的文件名” 奇怪的是,在我的电脑上,子字符串“file:\”被添加到我的原始连接字符串中,这可能就是引发异常的原因。 在调试模式下,在运行时删除“file:\”子字符串时,不会引发异常 为什么要添加此子字符串?它来自哪里?我怎样才能解决这个问题呢 最近我发现可能与a

我有一个*.sdf文件中的数据库(compact sql server)。 我将compact framework项目转换为常规pc项目,出于某种原因,使用相同的代码和相同的*.sdf文件,引发了以下异常: “文件名无效。请检查数据库的文件名”

奇怪的是,在我的电脑上,子字符串“file:\”被添加到我的原始连接字符串中,这可能就是引发异常的原因。 在调试模式下,在运行时删除“file:\”子字符串时,不会引发异常

为什么要添加此子字符串?它来自哪里?我怎样才能解决这个问题呢

最近我发现可能与app.config文件丢失有某种联系。 这仍然不能解释原始连接字符串是如何存在的,只是添加了子字符串

请帮忙。
提前感谢

因为windows CE没有“当前目录”,所以实现通常会将当前正在运行的程序集的位置作为要查找的目录。在桌面上,
Assembly.getExecutionGassembly().GetName().CodeBase
返回的字符串包含该方案前缀。

我不明白为什么需要“file://”。如果没有这些,它应该可以正常工作。可以肯定的是,您使用的是file:\而不是file://

看起来是错误的,sdf文件是本地的吗?在子文件夹中?它在哪里?你能举一个连接字符串的例子吗?是的,它是本地的。它位于连接字符串“文件:\\C:\\solutionname\\projectname\bin\debug\sdfname.sdf”中:“文件:\\C:\\solutionname\\projectname\\bin\\debug\\sdfname.sdf”什么是程序集。GetExecutionGassembly().GetName().CodeBase?如何解决该问题?如果输入“sdfname.sdf”,则打开该文件的进程必须将其解析为,例如,“c:\somefolder\sdfname.sdf”。在windows计算机上,开发人员通常假定文件位于当前文件夹中,但由于windows CE Device没有“当前文件夹”,CE开发人员通常使用程序集的路径。在windows CE上,此函数返回一个路径,您可以使用未经修改的路径打开文件,而在完整框架上,添加了一个方案前缀(文件:\\)。我不知道从相对到绝对的转换发生在哪里,如果是在第三方库中,你可以看到他们是否有一个完整的框架版本,你可以使用它来代替CF版本?也许我没有正确地解释我自己。。“file:\”前缀是自动添加的-我没有添加它。这就是抛出异常的原因(不是我,不是框架)。我不知道为什么会这样。我希望找到前缀的来源并理解为什么会发生这种情况,但现在我甚至希望在调用引发异常的函数之前,在运行时直接删除它。不幸的是,连接字符串是私有的,因此-我无法访问它。你说得很清楚,我只是没有正确地阅读它。您的连接字符串应该是:“数据源=c:\db.sdf”。