连接的时候指定用户和秘密就可以了.
你是不是用Access打开这个*.mdb文件还没有关闭.贴段代码出来,看看你是如何使用的.

解决方案 »

  1.   

    public class form1:System.Windows.Forms.Form
    {
    ...
    //定义3个连接
    private System.Data.OleDb.OleDbConnection myConn1;
    private System.Data.OleDb.OleDbConnection myConn2;
    private System.Data.OleDb.OleDbConnection myConn3;
    ....
    //初始化连接的连接串
    private void selfinit()
    {
    this.myConn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;PassWord=test;User ID=Admin;Data Source=userData.mdb";
    this.myConn1.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;PassWord=test;User ID=Admin;Data Source=userData.mdb";
    this.myConn2.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;PassWord=test;User ID=Admin;Data Source=userData.mdb";
    }
    ...
    private bool CheckUser(String username,String password)
    {
    bool tmp = false;
    String mySql = "select * from sysusertable where username='"+username+"' and password='"+password+"'";
    OleDbCommand myComm = new OleDbCommand(mySql,this.myConn);
    this.myConn.open();//这里出错,错误原因“无法启动应用程序,工作群组资料被另一个使用者以独占方式打开”
    OleDbDataReader myDr = myComm.ExecuteReader();
    if(myDr.Read())
    {
    tmp = true;
    }
    this.myConn.close();
    return tmp;
    }.....
    }
      

  2.   

    刚才忘记写了,在CheckUser()中使用了this.myConn,出错。在别的地方有这种情况,即,在一个连接中打开另一个连接的情况(如下),但CheckUser()没有,也出错。String mySql = "select * from table1";
    OleDbCommand myComm = new OleDbCommand(mySql,this.myConn);
    this.myConn.open();
    OleDbDataReader myDr = myComm.ExecuteReader();
    while (myDr.Read())
    {
    String mySql1 = "select * from table2 where field1='"+myDr["username"].toString()+"'";
    OleDbCommand myComm1 = new OleDbCommand(mySql1,this.myConn1);
    this.myConn1.open();
    ......
    this.myConn1.close();
    }
    myDr.close();
    this.myConn.close();
      

  3.   

    oledb向导创建连接一般不会出现这种问题,你可以用向导,试试看
      

  4.   

    我有点明白,我猜你是这样的,
    在调用checkuser()方法前,你肯定用了myconn链接数据库了,而且在用这个myconn没有关闭,你又调用了checkuser(),所以它就会说你所说的错误,这个以前我也有过!!!
    解诀办法是,单独在checkuser里用另外一个链接,不要同名
    C#的意思,你在一个联接没有关闭前,如datareader等,好象就不能再用与此相同的联接!
      

  5.   

    没有,你看我的第2段代码,就是用的另一个连接,至于checkuser(),其中只用到了一个连接,后来我试了,凡是加密了的access数据库,用一个连接也会出这个错误,难道加密的access数据库不能用这个连接串
    “Provider=Microsoft.Jet.OleDb.4.0;PassWord=test;User ID=Admin;Data Source=userData.mdb”
    但是用下面这个连接串,居然连都连不上
    "driver={Microsoft Access Driver (*.mdb)};dbq=test.mdb;uid=admin;pwd=password"还有其他的连接吗?难道要用DSN???