当前位置: 首页 > 编程语言 > C#

错误:类型'System.Data.OleDb.OleDbDataReader'没有定义构造函数share

时间:2023-04-10 17:15:51 C#

错误:类型'System.Data.OleDb.OleDbDataReader'没有定义构造函数密码选项...请帮助我...这是代码:default.aspx.csprotectedvoidButton1_Click(objectsender,EventArgse){myCon.Open();stringuserid=txtuserid.Text;stringoldpass=txtoldpass.Text;stringnewPass=txtnewpass.Text;stringconPass=txtconfirmpass.Text;stringq="selectuser_id,passwdfromregisterwhereuser_id=@useridandpasswd=@oldpass";OleDbCommandcmd=newOleDbCommand(q,myCon);OleDbDataReader阅读器=newOleDbDataReader();cmd.Parameters.AddWithValue("@userid",txtuserid.Text);cmd.Parameters.AddWithValue("@oldpass",txtoldpass.Text);读者=cmd.ExecuteReader();读者。阅读();if(reader["user_id"].ToString()!=String.Empty&&reader["passwd".ToString()!=String.Empty){if(newPass.Trim()!=conPass.Trim()){lblmsg.Text="新密码和旧密码不匹配";}else{q="更新注册SETpasswd=@newPassWHEREuser_id=@userid";cmd=newOleDbCommand(q,myCon);cmd.Parameters.AddWithValue("@newPasss",txtnewpass.Text);cmd.Parameters.AddWithValue("@userod",txtuserid.Text);cmd.Parameters.AddWithValue("@passwd",txtoldpass.Text);intcount=cmd.ExecuteNonQuery();if(count>0){lblmsg.Text="密码修改成功";}else{lblmsg.Text="passwordnotchanged";}}}}catch(Exceptionex){throwex;}}还要检查.....编译错误说明:编译服务此请求所需的资源时发生错误请查看下面的特定错误详细信息并相应地修改您的源代码。编译器错误消息:CS0143:没有为类型“System.Data.OleDb.OleDbDataReader”定义构造函数源错误:第36行:OleDbCommandcmd=newOleDbCommand(q,myCon);第37行:第38行:OleDbDataReaderreader=newOleDbDataReader();第39行:第40行:如错误信息所述;OleDbDataReader没有构造函数。来自OleDbDataReader文档;要创建OleDbDataReader,必须调用OleDbCommand对象的ExecuteReader方法,而不是直接使用构造函数。您可以使用ExecuteReader方法返回OleDbDataReaderOleDbDataReaderdr=cmd.ExecuteReader();并且您需要在调用ExecuteReader方法之前添加参数值。您还可以使用using语句来配置您的OleDbConnection、OleDbCommand和OleDbDataReader类;using(OleDbConnectionmyCon=newOleDbConnection(conString))using(OleDbCommandcmd=myCon.CreateCommand()){//定义你的sql查询并添加你的参数值。using(OleDbDataReaderdr=cmd.ExecuteReader()){//}正如史蒂夫提到的,OleDbDataReader.Read方法返回布尔值(true为false)并逐行读取OleDbDataReader结果。您可能想考虑在while语句中使用此方法的结果。例如;while(reader.Read()){//读取结果直到最后一行..}最后,我强烈怀疑您将密码存储为纯文本。不要那样做!使用SHA-512哈希。正如MSDN明确指出的那样,要创建OleDbDataReader,您必须调用OleDbCommand对象的ExecuteReader方法,而不是直接使用构造函数。您不能使用new实例化它,这就是您正在做的事情,这就是您弄错的原因。删除有问题的行并将其更改为此以消除错误:OleDbDataReaderreader=cmd.ExecuteReader();另外,请记住使用块来确保正确处理资源。使用(OleDbConnectionmyCon=newOleDbConnection(ConfigurationManager.ConnectionStrings["vhgroupconnection"].ConnectionString)){OleDbCommandcmd=newOleDbCommand(q,myCon);//添加参数等OleDbDataReaderreader=cmd.ExecuteReader();//处理的其余部分}问题:您正在尝试通过调用newOleDbDataReader()创建一个新的OleDbDataReader实例,而您应该使用OleDbCommand.ExecuteReader()创建一个读取器。在下面的代码中,using语句(这应该确保连接关闭或阅读器关闭OleDbDataReader的情况)。以上是C#学习教程:错误:类型'System.Data.OleDb.OleDbDataReader'没有定义构造函数共享的所有内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——连接字符串;使用(OleDbConnectionmyCon=newOleDbConnection(sConnString)){myCon.Open();stringuserid=txtuserid.Text;stringoldpass=txtoldpass.Text;stringnewPass=txtnewpass.Text;stringconPass=txtconfirmpass.Text;stringq="selectuser_id,passwdfromregisterwhereuser_id=@useridandpasswd=@oldpass";OleDbCommandcmd=newOleDbCommand(q,myCon);cmd.Parameters.AddWithValue("@userid",txtuserid.Text);cmd.Parameters.AddWithValue("@oldpass",txtoldpass.Text);字符串sUserId=string.Empty;字符串sPass=string.Empty;using(OleDbDataReaderreader=cmd.ExecuteReader()){if(reader.Read())//假设:返回一条记录{sUserId=reader["user_id"].ToS特林();sPass=reader["passwd"].ToString();}}if(sUserId!=string.Empty&&sPass!=string.Empty){if(newPass.Trim()!=conPass.Trim())lblmsg.Text="新密码和旧密码不匹配";else{q="UPDATEregisterSETpasswd=@newPassWHEREuser_id=@userid";cmd=newOleDbCommand(q,myCon);cmd.Parameters.AddWithValue("@newPass",txtnewpass.Text);cmd.Parameters.AddWithValue("@userid",txtuserid.Text);intcount=cmd.ExecuteNonQuery();if(count>0)lblmsg.Text="密码修改成功";elselblmsg.Text="密码未更改";}}}}catch(Exceptionex){抛出ex;}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载,请注明出处: