我正在尝试使用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
对象,而不是直接使用构造函数。
您可以使用返回ExecuteReader
的OleDbDataReader
方法
OleDbDataReader dr = cmd.ExecuteReader();
并且您需要在调用
ExecuteReader
方法之前添加参数值。还可以使用
using
statement来处置OleDbConnection
,OleDbCommand
和OleDbDataReader
之类的东西;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 mentioned,
OleDbDataReader.Read
method返回boolean
值(true
的false
),并逐行读取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/