【问题标题】:The file name is not valid. Check the file name for the database. [ File name = E:\\PractDB.sdf ]文件名无效。检查数据库的文件名。 [ 文件名 = E:\\PractDB.sdf ]
【发布时间】:2017-09-26 16:21:04
【问题描述】:

我知道已经有类似问题的帖子here。但是我的问题在于开发计算机本身。

我们有一个客户要求为 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 数据库文件的正确方法是什么?

【问题讨论】:

  • 通常在 Windows CE 上您不使用驱动器号

标签: sql-server-ce connection-string windows-ce


【解决方案1】:

前导 @ 字符表示您有一个 未转义 字符串。没有转义字符,反斜杠 (\) 没有任何特殊作用。

所以当你有这个时:

'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;";

但对该设备的 Google 快速检查显示它运行的是 Windows Mobile 6.5。值得怀疑的是,E:\ 驱动器是否是该数据库或任何数据库的正确路径,因为 Windows Mobile 从未使用过驱动器号。不幸的是,我必须先了解更多关于您的应用是如何部署的,然后才能在此处提供有关您实际应该拥有什么的更具体信息。

【讨论】:

    【解决方案2】:

    Windows CE 不使用驱动器号。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 1970-01-01
      • 2011-03-06
      • 2016-09-11
      • 1970-01-01
      相关资源
      最近更新 更多