我正在尝试使用ms访问数据库更改密码选项。

请帮助我。

这里的代码:
default.aspx.cs

protected void Button1_Click(object sender, EventArgs e)
{
    try
    {

        OleDbConnection myCon = new OleDbConnection(ConfigurationManager.ConnectionStrings["vhgroupconnection"].ConnectionString);
        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);

        OleDbDataReader reader = new OleDbDataReader();



        cmd.Parameters.AddWithValue("@userid", txtuserid.Text);

        cmd.Parameters.AddWithValue("@oldpass", txtoldpass.Text);



        reader = cmd.ExecuteReader();
        reader.Read();

        if (reader["user_id"].ToString() != String.Empty && reader["passwd"].ToString() != 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("@newPasss", txtnewpass.Text);
                cmd.Parameters.AddWithValue("@userod", txtuserid.Text);
                cmd.Parameters.AddWithValue("@passwd", txtoldpass.Text);

                int count = cmd.ExecuteNonQuery();

                if (count > 0)
                {
                    lblmsg.Text = "Password changed successfully";
                }
                else
                {
                    lblmsg.Text = "password not changed";
                }
            }
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}


还请检查.....


  编译错误说明:在编译过程中发生错误
  满足该请求所需的资源的汇编。请
  查看以下特定的错误详细信息并修改源
  适当地编码。
  
  编译器错误消息:CS0143:类型
  'System.Data.OleDb.OleDbDataReader'没有定义构造函数


源错误:

Line 36:             OleDbCommand cmd = new OleDbCommand(q, myCon);
Line 37:
Line 38:             OleDbDataReader reader = new OleDbDataReader();
Line 39:
Line 40:

最佳答案

如错误消息所述; OleDbDataReader没有构造函数。

documentation of OleDbDataReader;


  若要创建OleDbDataReader,必须调用ExecuteReader方法
  OleDbCommand对象,而不是直接使用构造函数。


您可以使用返回ExecuteReaderOleDbDataReader方法

OleDbDataReader dr = cmd.ExecuteReader();


并且您需要在调用ExecuteReader方法之前添加参数值。

还可以使用using statement来处置OleDbConnectionOleDbCommandOleDbDataReader之类的东西;

using(OleDbConnection myCon = new OleDbConnection(conString))
using(OleDbCommand cmd = myCon.CreateCommand())
{
    //Define your sql query and add your parameter values.

    using(OleDbDataReader dr = cmd.ExecuteReader())
    {
       //
    }
}


作为Steve mentionedOleDbDataReader.Read method返回boolean值(truefalse),并逐行读取OleDbDataReader结果。您可能需要考虑像while语句中一样使用此方法的结果。例如;

while(reader.Read())
{
    //Reads your results until the last row..
}


最后,我强烈怀疑您将密码存储为纯文本。不要那样做!使用SHA-512 hash

关于c# - 错误:类型'System.Data.OleDb.OleDbDataReader'没有定义构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24648081/

10-09 23:43