带有SQL Server CE数据库的连接字符串

时间:2011-07-19 08:13:50

标签: c# visual-studio-2008 windows-ce sql-server-ce connection-string

我正在尝试与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;";

我在这里做错了什么?

可能与移动设备中正在调试(执行)的应用程序有关吗?

我真的不这么认为,因为数据库在加载应用程序时起作用,这意味着它与列表框相关联并从数据库正确加载数据。

4 个答案:

答案 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" />