Error: The type 'System.Data.OleDb.OleDbDataReader' has no constructors defined

前端 未结 3 1284
梦毁少年i
梦毁少年i 2021-01-22 12:28

I am trying to change password option with ms access database....

please help me folks....

here the code: default.aspx.cs

protected void Button1         


        
3条回答
  •  误落风尘
    2021-01-22 13:15

    Problem: You try to make new instance of OleDbDataReader by calling new OleDbDataReader() instead you should create a reader using OleDbCommand.ExecuteReader().

    In the following code notice use of using statement (this should ensure connection closing or reader closing for the case of OleDbDataReader).

    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            string sConnString = ConfigurationManager.ConnectionStrings["vhgroupconnection"].ConnectionString;
            using(OleDbConnection myCon = new OleDbConnection(sConnString))
            {
                 myCon.Open();
                 string userid = txtuserid.Text;
                 string oldpass = txtoldpass.Text;
                 string newPass = txtnewpass.Text;
                 string conPass = txtconfirmpass.Text;
    
                 string q = "select user_id,passwd from register where user_id = @userid and passwd = @oldpass";
    
                 OleDbCommand cmd = new OleDbCommand(q, myCon);
                 cmd.Parameters.AddWithValue("@userid", txtuserid.Text);
                 cmd.Parameters.AddWithValue("@oldpass", txtoldpass.Text);
    
                 string sUserId = string.Empty;
                 string sPass = string.Empty;
    
                 using(OleDbDataReader reader = cmd.ExecuteReader())
                 {
                    if(reader.Read()) //assumption: one record returned
                    {           
                       sUserId = reader["user_id"].ToString();
                       sPass = reader["passwd"].ToString();
    
                    }
                 }
    
                 if (sUserId != string.Empty && sPass != string.Empty)
                 {
                   if (newPass.Trim() != conPass.Trim())                   
                       lblmsg.Text = "New Password and old password does not match";
                   else
                   {
                        q = "UPDATE register SET passwd = @newPass WHERE user_id =@userid";
                        cmd = new OleDbCommand(q, myCon);
                        cmd.Parameters.AddWithValue("@newPass", txtnewpass.Text);
                        cmd.Parameters.AddWithValue("@userid", txtuserid.Text);                       
    
                        int count = cmd.ExecuteNonQuery();
    
                        if (count > 0)                
                           lblmsg.Text = "Password changed successfully";                
                        else                
                           lblmsg.Text = "password not changed";
    
                   }
                }
            }
        }
        catch (Exception ex)
          {
            throw ex;
          }
    }
    

提交回复
热议问题