Microsoft Jet 数据库引擎打不开文件'G:\WebRoot\CarBuyer\Cars.mdb'。 它已经被别的用户以独占方式打开,或没有查看数据的权限。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: Microsoft Jet 数据库引擎打不开文件'G:\WebRoot\CarBuyer\Cars.mdb'。 它已经被别的用户以独占方式打开,或没有查看数据的权限。

解决方案 »

  1.   

    你的文件应该没有被打开吧!你访问这个文件的权限检查一下,如果使用ASP.net就要确认,aspnet这个用户有权限!
      

  2.   

    根本就没有打开过这个mdb文件。
      

  3.   

    你试一下是否是可以读,但是不能写,如果是就是权限的问题,你可以添加aspnet用户,并设置对应的权限。
      

  4.   

    还有你看一下你的mdb 文件是不是只读的
      

  5.   

    有关数据库操作的代码如下:
    namespace CarBuyer
    {
    /// <summary>
    /// Summary description for DataSource.
    /// </summary>
    public class CarsDataSet
    {
    private DataSet mvarDataSet;
    private OleDbConnection mvarConnection; public CarsDataSet(string DataBaseFileName)
    {
    string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Password=\"\";User ID=Admin;Data Source=" + DataBaseFileName + ";Mode=Share Deny None;Extended Properties=\"\";Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";
    this.Connection = new OleDbConnection(ConnectionString);
    }    public OleDbConnection Connection
    {
    get { return mvarConnection; }
    set { mvarConnection = value;
    GetTables();
    }
    } void GetTables() 
    {
    OleDbCommand sc = new OleDbCommand();
    DataTable dt; mvarDataSet = new DataSet("Cars"); sc.Connection = mvarConnection;
    mvarConnection.Open(); sc.CommandType = CommandType.TableDirect; GetTable(sc, "Manufacturers");
    GetTable(sc, "Models");
    GetTable(sc, "Options");
    GetTable(sc, "Colors"); DataRelation dr;
    dr = new DataRelation("Cars", Manufacturers.Columns["ID"], Models.Columns["ManufacturerID"], false);
    mvarDataSet.Relations.Add(dr); }

    void GetTable(OleDbCommand sc, string TableName) 
    {
    OleDbDataAdapter da = new OleDbDataAdapter();
    sc.CommandText = TableName;
    da.SelectCommand = sc;
    da.Fill(mvarDataSet, TableName);
    } public DataTable Manufacturers 
    {
    get { return mvarDataSet.Tables["Manufacturers"];}
    } public DataTable Options 
    {
    get {return mvarDataSet.Tables["Options"]; }
    } public DataTable Colors 
    {
    get {return mvarDataSet.Tables["Colors"]; }
    } public DataTable Models 
    {
    get {return mvarDataSet.Tables["Models"]; }
    }
    public DataSet ManufacturerToModelHierarchy 
    {
    get {return mvarDataSet;}
    }
    }}
    在下面这个位置出错
    行 35: 
    行 36:  sc.Connection = mvarConnection;
    行 37:  错误 mvarConnection.Open();
    行 38: 
    行 39:  sc.CommandType = CommandType.TableDirect
      

  6.   

    尽量不要使用OleDataReader , 改用DataSet
      

  7.   

    simplify your connection stringstring ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DataBaseFileName ;also 1。先确认你退出ACCESS了
    2。if it needs password, 设置连接的 Jet OLEDB:Database Password=你的密码also 参考
    http://www.connectionstrings.com/http://www.microsoft.com/technet/prodtechnol/office/office2000/proddocs/opg/part4/ch18.mspx
      

  8.   

    呵呵解决了。
    原来是连接字符串太多的缘故。呵呵,感谢各位的参与,尤其是saucer(思归) 大侠的提示。
      

  9.   

    顺便问一下,如果要改为使用ADO,而不是OLEDB,该引用什么名字空间呢?
      

  10.   

    .Net 1.* doesn't support ADO, you need to add a reference to the ado library, see an example athttp://support.microsoft.com/default.aspx?scid=kb;EN-US;309485