我正在使用smartApplication,当我尝试连接到我的SQL Server CE 2005数据库时,我得到了异常
路径无效。检查数据库的目录。 [Path = D:\ SmartProject \ DBFile.sdf]
我的连接字符串是
数据源= D:\ SmartProject \ DBFile.sdf;密码= test123
和连接的代码就像
string connectionString = "Data Source=D:\\SmartProject\\DBFile.sdf;Password=test123";
SqlCeConnection Connection = new SqlCeConnection(connectionString);
SqlCeCommand comm = new SqlCeCommand(SqlSelectCommandText, Connection);
SqlCeDataAdapter da = new SqlCeDataAdapter(comm);
DataSet ds = new DataSet();
try
{
Connection.Open();
da.Fill(ds);
if (ds.Tables.Count > 0)
dataTable = ds.Tables[0];
else
dataTable = new DataTable();
bsuccessfullyExecuted = true;
}
catch (SqlCeException ex)
{
bsuccessfullyExecuted = false;
dataTable = null;
}
finally
{
Connection.Close();
}
当代码尝试打开连接时,如果文件位于指定的位置或目录,则抛出此异常。
当我将带有.exe的DBFile.sdf文件放在bin中并从connectionstring中删除除数据库文件名之外的路径时,它可以正常工作。
但是当我尝试通过Emulator访问它时会显示此错误。前提是它通过底座和Windows Mobile Device中心连接。 它显示所有页面,但是当我尝试通过异常访问Db时..
答案 0 :(得分:0)
实际上我们必须将DBFile.sdf
放在移动设备文件夹中,现在连接字符串将是
Data Source=\Temp\DBFile.sdf;Password=test123
此Temp位于Mobile Device文件夹中,因为我们的设计器会话连接到通过ActiveSync连接的移动设备上的SQL Mobile数据库。
因此,使用bindingsource自动生成的数据库连接字符串是一个特殊的连接字符串,只能在VS2005中使用,并且以DataSource = Mobile Device .....开头。
因此对于Emulator,我们必须将sdf文件放在Mobile Devide中,如上所述