错误:类型'System.Data.OleDb.OleDbDataReader'没有定义构造函数 [英] Error: The type 'System.Data.OleDb.OleDbDataReader' has no constructors defined
问题描述
我正在尝试使用ms访问数据库更改密码选项....
I am trying to change password option with ms access database....
请帮助我....
此处的代码:default.aspx.cs
here the code: 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;
}
}
还要检查.....
编译错误说明:在执行过程中发生错误满足该请求所需的资源的汇编.请查看以下特定的错误详细信息并修改您的源适当地编码.
Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
编译器错误消息:CS0143:类型'System.Data.OleDb.OleDbDataReader'未定义构造函数
Compiler Error Message: CS0143: The type 'System.Data.OleDb.OleDbDataReader' has no constructors defined
源错误:
Line 36: OleDbCommand cmd = new OleDbCommand(q, myCon);
Line 37:
Line 38: OleDbDataReader reader = new OleDbDataReader();
Line 39:
Line 40:
推荐答案
如错误消息所述; OleDbDataReader
没有构造函数.
As error message says; OleDbDataReader
has no constructor.
来自 OleDbDataReader
;
要创建
OleDbDataReader
,必须调用ExecuteReader
方法OleDbCommand
对象,而不是直接使用构造函数.
To create an
OleDbDataReader
, you must call theExecuteReader
method of theOleDbCommand
object, instead of directly using a constructor.
您可以使用 ExecuteReader
方法,该方法返回 OleDbDataReader
OleDbDataReader dr = cmd.ExecuteReader();
并且您需要在调用 ExecuteReader 方法之前添加参数值.
And you need add your parameter values before you call ExecuteReader
method.
还使用 使用
语句像这样处置您的 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) OleDbDataReader.Read
方法返回 boolean
值( true
为 false
),并读取您的 OleDbDataReader
结果按行.您可能需要考虑使用此方法的结果,例如 while语句.例如;
And as Steve mentioned, OleDbDataReader.Read
method returns boolean
value (true
of false
) and it reads your OleDbDataReader
results row by row. You might need to consider to use the result of this method like in a while statement. For example;
while(reader.Read())
{
//Reads your results until the last row..
}
最后,我强烈怀疑您将密码存储为纯文本.请勿这样做!使用 SHA-512哈希
As a final words, I strongly suspect you store your passwords as plain text. Don't do that! Use SHA-512 hash.
这篇关于错误:类型'System.Data.OleDb.OleDbDataReader'没有定义构造函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!