我正在尝试与Windows CE 5.0应用程序中的数据库建立连接,而我正在使用Compact Framework 2.0
数据库位于项目文件夹中:
C:\ Documents and Settings \ softdil \ My Documents \ Visual Studio 2008 \ Projects \ 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;";
我在这里做错了什么?
可能与移动设备中正在调试(执行)的应用程序有关吗?
我真的不这么认为,因为数据库在加载应用程序时起作用,这意味着它与列表框相关联并从数据库正确加载数据。
答案 0 :(得分:6)
在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 :(得分:1)
你必须让它适用于WinCE,我认为你的目标没有C:\\Documents and Settings\\
。
我真的不这么认为,因为数据库工作时......
查看你的App.Config,也许你已经有了一个连接字符串?
答案 2 :(得分:0)
以下是我修复它的方法,以防任何人碰巧遇到同样的问题。
在Visual Studio中将应用程序执行到Windows CE终端设备时,应用程序将被复制到数据库中。因此,连接字符串必须使用与终端相关的uri而不是相对于计算机中的路径。
答案 3 :(得分:0)
在数据源属性中提供数据库文件的路径,并在App.Config文件中添加providerName
<add name="Keyname" connectionString="Data Source=DBPath\Database1.sdf" providerName="Microsoft.SqlServerCe.Client.3.5" />