我的登陆程序是这样的String connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
        connStr+=@"D:\旅游信息网\旅游信息网\travel.mdb";
        //strConnection+=@"Data Source=C:BegASPNETNorthwind.mdb";  
        OleDbConnection con = new OleDbConnection(connStr);
        con.Open();        string sql = "select count (*) from User where username='" + this.TextBox1.Text.Trim() + "' and password='" + this.TextBox2.Text.Trim() + "'";
        //sql = "select count(*) from user where username='" + a + "' and password='" + b + "'";//建立sql查询语句   
        OleDbCommand cmd = new OleDbCommand(sql, con);
        //OleDbCommand cmd = new OleDbCommand(sql, con);
        int state = Convert.ToInt32(cmd.ExecuteScalar());//执行sql语句,并返回获得值  
        if (state == 0 || state > 1)//如果数据中没有记录或有多条记录则抱错   
        {
            this.Label3.Text = "用户不存在,请检测用户名和密码是否正确!";
        }
        else
        {
            this.Label3.Text = "登入成功!";
        }
    }但是程序就是老报错,报"用户代码未处理.oledbexception"请问大家是怎么回事呢???
谢谢拉!!!

解决方案 »

  1.   

    报错的时候断点停在哪
    先将
    string sql = "select count (*) from User where username='" + this.TextBox1.Text.Trim() + "' and password='" + this.TextBox2.Text.Trim() + "'";
    中的字段名表名之类的加个方括号试试
    string sql = "select count (*) from [User] where [username]='" + this.TextBox1.Text.Trim() + "' and [password]='" + this.TextBox2.Text.Trim() + "'";
      

  2.   

    你try...catch一下并输出异常信息看看,估计是Access连接字符串的问题。
      

  3.   

          int state = Convert.ToInt32(cmd.ExecuteScalar());//执行sql语句,并返回获得值 报错停在这里谢谢大家!!!
      

  4.   

    string sql = "select count (*) from [User] where [username]=@userName and [password]=@password";
    cmd.Parameters.AddWithValue("@userName",this.TextBox1.Text.Trim());
    cmd.Parameters.AddWithValue("@password",this.TextBox2.Text.Trim());
    int state = Convert.ToInt32(cmd.ExecuteScalar());
    if(state > 0)
    //
    else
    //
      

  5.   

    int state = Convert.ToInt32(cmd.ExecuteScalar());//执行sql语句,并返回获得值
    说明你这个cmd.ExecuteScalar()返回的值不是可以转换为int型的内容
    先 object o= Convert.ToInt32(cmd.ExecuteScalar()); 
    看看返回的是什么内容
    要注意:cmd.ExecuteScalar返回的是符合条件的第一行第一列的内容。