我编写了一个按钮的Click事件,目的是当验证通过后将数据库中的数据更新。代码:private void EditSure_Click(object sender, System.EventArgs e)    //按钮代码
{
    if(Originame.Text==""||Originpw.Text==""||Newpw.Text=="")    //假如没填完整
{
    error.Text="你输入的信息不完整!";
}
else if(Newpw.Text!=ReNewpw.Text)                     //假如新密码2次输入不相同
{
    error.Text="新密码2次输入不匹配!";
}
else      //填写正确后将进行数据的上传更新...
{
    string strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;";
    string DataBase  = Server.MapPath("db/db.mdb");
    strConnection += "Data Source=" + DataBase;      //定义连接数据库的路径    string strSQL1 = "SELECT * FROM login where username='" + Originame.Text + "'";
    OleDbConnection objConnection = new OleDbConnection(strConnection);
    OleDbCommand objCommand =new OleDbCommand(strSQL1, objConnection);
    OleDbDataReader objDataReader ;
    objCommand.Connection.Open();
    objDataReader = objCommand.ExecuteReader();
    if (objDataReader.Read()==false)      //如果用户名不存在
    {
        error.Text = "用户名输入有误!";
    }
    else if(objDataReader.GetString(2)!=Originpw.Text)    //如果密码验证错误
    {
error.Text="密码验证错误!";
    }
    else          //一切正常,进行数据更新...
    {
string strSQL2="UPDATE login SET password='"+Newpw.Text+"' WHERE id="+objDataReader.GetInt32(0);                  //这是我写的SQL语句
OleDbConnection myConnection = new OleDbConnection(strConnection);
OleDbCommand myCommand = new OleDbCommand (strSQL2,myConnection); 
myCommand.CommandTimeout = 15;
myCommand.CommandType=CommandType.Text;
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
DataGrid1.EditItemIndex = -1;
BindDataWithSorting(""); 
    }
    Panel1.Visible=false;           //更新成功后将更新面板隐藏
    }
}
以上代码就是我为删除确认按钮定义的,但是编译的时候就会出现“UPDATE 语句的语法错误”然后将 myCommand.ExecuteNonQuery(); 这一行标红了。我找来找去就是不知道问题出在哪,也是我自己太菜鸟,请高手指点迷津...谢谢~~~~并且很想认识共同学习的朋友,我的QQ:287741352。

解决方案 »

  1.   

    string strSQL2="UPDATE login SET password='"+Newpw.Text+"' WHERE id="+objDataReader.GetInt32(0);                  //这是我写的SQL语句Response.Write ("<script>alert("+strSQL2+")</scritp>"); OleDbConnection myConnection = new OleDbConnection(strConnection);首先有一点可以肯定,这种提示肯定是你的UPDATE语句有错,那么用上面的代码,可以弹出SQL语句,你自己检查一下有无错误.
      

  2.   

    objDataReader.GetInt32(0);
      能解释一下这个是什么吗
      

  3.   

    那是对检索到的行的第一列的数据取值 我在数据库中的第一行是自动编号的主键id
    所以当objDataReader.Read()检索到和string strSQL1 = "SELECT * FROM login where username='" + Originame.Text + "'";符合的那一行时,就有相应的id值,当执行后面的else语句时就根据这个id值再次确认,并改写后面的 password项 的值数据库中的结构为 id(主键) username  password  
                        1       admin     1111   
                        2       user1     2222
                       ...       ...       ...
      

  4.   

    错了,应该是这样
    Response.Write ("<script>alert('"+strSQL2+"')</scritp>");
      

  5.   

    试试:
    string strSQL2="UPDATE login SET password='"+Newpw.Text+"' WHERE id= '"+objDataReader.GetInt32(0)+"'";
      

  6.   

    有写东西不严谨,注意使用trim(),以近尽量避免错误。
    string pass = Newpw.Text.ToString().Trim();
    string idnum = objDataReader.GetInt32(0).Tostring().Trim();
    string str = "update login set password = '" + pass + "'" where id = '" + iddnum + "'";
    试试看。
    如果可以的话,把源代码发来看看!