文件名无效。检查数据库的文件名。 [文件名= E:\\ PractDB.sdf]

问题描述:

我知道已经有类似问题的帖子here。不过,我的问题在于开发计算机本身。文件名无效。检查数据库的文件名。 [文件名= E:\ PractDB.sdf]

我们有客户要求为Motorola MC 65(Window CE os)设备开发数据库驱动的应用程序。

以下因特网能够在设备上运行一个空的表单应用程序(连接到支架的设备)。

我创建了一个SQL Server Compact数据库,添加了一个表并向其中填充了数据。通过Visual Studio Server Explorer成功建立连接。

但是通过代码,我得到一个错误。

下面是我的连接字符串代码:

SqlCeConnection con = new SqlCeConnection(); 

con.ConnectionString = @"Persist Security Info = False; 
         Data Source = 'E:\\PractDB.sdf'; 
         Password = 'password#123'; 
         File Mode = 'shared read'; 
         Max Database Size = 256; 
         Max Buffer Size = 1024"; 

con.Open(); 

请让我知道我错过了什么。在连接字符串中引用.sdf数据库文件的正确方法是什么?

+1

通常在Windows CE上,您不使用驱动器号 – ErikEJ

领先的@字符表示您有一个未转义的字符串。没有转义字符和反斜杠(\)没有做任何特殊的事情。

所以,当你有这样的:

'E:\\PractDB.sdf' 

这两个反斜杠字符的是你的字符串的一部分。只要摆脱其中一个,你会没事的,假设真的是正确的路径和文件。

此外,你不应该需要引号。因此,最终连接字符串看起来像这样:

con.ConnectionString = @"Persist Security Info = False; 
         Data Source = E:\PractDB.sdf; 
         Password =password#123; 
         File Mode = shared read; 
         Max Database Size = 256; 
         Max Buffer Size = 1024;"; 

但是,快速谷歌检查该设备显示它运行Windows Mobile 6.5。怀疑E:\驱动器是该数据库或任何数据库的正确路径,因为Windows Mobile从未使用驱动器号。不幸的是,我必须更多地了解您的应用程序的部署方式,然后才能提供有关您实际应用的更具体信息。

Windows CE不使用驱动器号。

如果数据库存储在根文件夹中,只需使用\PractDB.sdf即可。