代码之家  ›  专栏  ›  技术社区  ›  Azhar

通过Emulator测试应用程序时放置.sdf文件的位置

  •  1
  • Azhar  · 技术社区  · 14 年前

    我正在使用SmartApplication,在这里,当我试图连接到我的SQL Server CE 2005数据库时,我得到了异常

    路径无效。检查数据库的目录。[路径=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();
        }
    

    当代码试图打开连接时,如果文件位于指定的位置或目录,则会引发此异常。

    当我将dbfile.sdf文件和.exe放在bin中并从connectionstring中删除除数据库文件名之外的路径时,它就工作了。

    但是当我试图通过模拟器访问它时,它显示了这个错误。前提是它通过底座和Windows移动设备中心连接。 它显示所有页面,但当我试图通过异常访问数据库时……

    1 回复  |  直到 12 年前
        1
  •  0
  •   Azhar    14 年前

    实际上我们必须 DBFile.sdf 在移动设备文件夹中,现在连接字符串为

    Data Source=\Temp\DBFile.sdf;Password=test123
    

    当我们的设计器会话连接到SQL Mobile数据库时,此临时文件位于Mobile设备文件夹中,该数据库位于通过ActiveSync连接的移动设备上。

    因此,使用bindingSource自动生成的数据库连接字符串是一个特殊的连接字符串,它仅在VS2005中起作用,并且以datasource=mobile device…..

    所以对于模拟器,我们必须将sdf文件放入mobile devide,如上所述。