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

时间:2017-09-26 16:21:04

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

我知道有类似问题的帖子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数据库文件的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

前导@字符表示您有未转义字符串。没有转义字符和反斜杠(\)没有做任何特别的事情。

所以当你有这个:

'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。由于Windows Mobile从未使用过驱动器号,因此E:\驱动器是此数据库或任何数据库的正确路径,这令人怀疑。不幸的是,在我提供有关您应该拥有的更多具体信息之前,我必须了解有关您的应用程序部署方式的更多信息。

答案 1 :(得分:0)

Windows CE不使用驱动器号。

如果数据库存储在根文件夹中,只需使用const cp = require('child_process'); const request = require('request'); module.exports = function (context, myTimer) { context.log('Starting'); function doCall(cb) { const url = 'https://jsonplaceholder.typicode.com/posts'; request(url, (err) => { if (err) { context.log("error: " + err.toString()); } cb(); }); } let i = 500; doCall(function iterate() { if (i-- > 0) { context.log('iterate ' + i); doCall(iterate); } else { context.log('done'); context.done(); } }); };