private void btnmodify_click(object sender, System.EventArgs e)
{ if(Page.IsValid)
uid=Convert.ToInt32(Session["uid"].ToString());
strConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../")+"data/users.mdb";
strSQL="Select pwd from information where id="+uid.ToString();
cn=new OleDbConnection(strConn);
cmd=new OleDbCommand(strSQL,cn);
cn.Open();
dr=cmd.ExecuteReader();
while(dr.Read())
{
oldpwd=dr["pwd"].ToString();
}
dr.Close();
if(txtoldpwd.Text!=oldpwd)
{
lblerror.Text="密码错误!";
}
else
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
cn.Close();
}
运行后提示:
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OleDb.OleDbException: 没有为命令对象设置命令。
源错误:
行 45: strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
行 46: cmd1=new OleDbCommand(strSQL1,cn);
行 47: cmd1.ExecuteNonQuery();
行 48:
行 49: cn.Close();
请高手指教。
6 个解决方案
#1
楼主的这个错误应该是第二次的那个错误,datareader是连接形的,再单步调试一下看看
#2
这里不对:
else
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
cn.Close();
改成:
else
{
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
}
cn.Close();
else
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
cn.Close();
改成:
else
{
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
}
cn.Close();
#3
else
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
cn.Close();
改成:
else
{
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
}
cn.Close();
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
cn.Close();
改成:
else
{
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
}
cn.Close();
#4
顺便说一下,建议你每次连接之后及时关闭数据库连接。
即:
dr.Close();
cn.Close();
if(txtoldpwd.Text!=oldpwd)
{
lblerror.Text="密码错误!";
}
else
{
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cn.Open();
try
{
cmd1.ExecuteNonQuery();
}
catch
{
}
cn.Close();
}
即:
dr.Close();
cn.Close();
if(txtoldpwd.Text!=oldpwd)
{
lblerror.Text="密码错误!";
}
else
{
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cn.Open();
try
{
cmd1.ExecuteNonQuery();
}
catch
{
}
cn.Close();
}
#5
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
这句有问题,
改成
strSQL1="UPDATE information Set pwd ='"+txtpwd.Text.ToString()+"'";
这句有问题,
改成
strSQL1="UPDATE information Set pwd ='"+txtpwd.Text.ToString()+"'";
#6
txtpwd.Text本来就是字符串,搞个ToString()不是多此一举吗
#1
楼主的这个错误应该是第二次的那个错误,datareader是连接形的,再单步调试一下看看
#2
这里不对:
else
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
cn.Close();
改成:
else
{
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
}
cn.Close();
else
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
cn.Close();
改成:
else
{
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
}
cn.Close();
#3
else
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
cn.Close();
改成:
else
{
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
}
cn.Close();
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
cn.Close();
改成:
else
{
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cmd1.ExecuteNonQuery();
}
cn.Close();
#4
顺便说一下,建议你每次连接之后及时关闭数据库连接。
即:
dr.Close();
cn.Close();
if(txtoldpwd.Text!=oldpwd)
{
lblerror.Text="密码错误!";
}
else
{
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cn.Open();
try
{
cmd1.ExecuteNonQuery();
}
catch
{
}
cn.Close();
}
即:
dr.Close();
cn.Close();
if(txtoldpwd.Text!=oldpwd)
{
lblerror.Text="密码错误!";
}
else
{
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
cmd1=new OleDbCommand(strSQL1,cn);
cn.Open();
try
{
cmd1.ExecuteNonQuery();
}
catch
{
}
cn.Close();
}
#5
strSQL1="UPDATE information Set pwd ='txtpwd.Text.ToString()'";
这句有问题,
改成
strSQL1="UPDATE information Set pwd ='"+txtpwd.Text.ToString()+"'";
这句有问题,
改成
strSQL1="UPDATE information Set pwd ='"+txtpwd.Text.ToString()+"'";
#6
txtpwd.Text本来就是字符串,搞个ToString()不是多此一举吗