当前位置:编程学习 > C#/ASP.NET >>

各位大仙,谢谢帮忙了,一个数据库的问题,update

  string sql = string.Empty;
                //sql = "select * from tbStudentInfo where filedStudentNumber='" + tbCID.Text.Trim() + 

"'";
                String con = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source = \"C:\\Documents and Settings\\Administrator\\桌面\\tbStudentInfo.mdb\"";
                OleDbConnection conne = new OleDbConnection(con);
                conne.Open();
                OleDbCommand conmd = new OleDbCommand("select * from tbStudentInfo where 

filedStudentNumber='" + tbCID.Text.Trim() + "'", conne);
                if (conmd.ExecuteNonQuery() > 0)
                {
                    MessageBox.Show("学号已经存在!");
                }
                else 
                {
                    sql = "update tbStudentInfo set filedName = '" + tbCName.Text.Trim() + "',filedSex 

= '" + tbCSex.Text.Trim() + "',filedRace = '" + tbCRace.Text.Trim() + "',filedAddress='" + 

tbCAddress.Text.Trim() + "',filedPhone='" + tbCPhone.Text.Trim() + "',filedRole = '" + 

tbCRole.Text.Trim() + "',filedPostalCode = '" + tbCPostalCode.Text.Trim() + "'";
                    sql = sql + "where filedStudentID=" + tbCID.Text.Trim();
                    conmd.CommandText = sql;
                    conmd.ExecuteNonQuery();
                    MessageBox.Show("信息提示成功")
运行后,显示了信息提示成功,但是数据库tbStudentInfo 里面的内容却没有更新 --------------------编程问答-------------------- 把conmd.ExecuteNonQuery();
  MessageBox.Show("信息提示成功")
改成int i = conmd.ExecuteNonQuery();
if (i>0)
{
MessageBox.Show("信息提示成功")
}
else
{
MessageBox.Show("信息提示失败")
}
运行程序看会不会提示成功 --------------------编程问答-------------------- sql = sql + "where filedStudentID=" + tbCID.Text.Trim();
条件要加单引号,因为是string型 --------------------编程问答-------------------- 应该是条件有问题


filedStudentNumber='" + tbCID.Text.Trim() + "'", 

--------------------编程问答--------------------
引用 1 楼 chazikai24 的回复:
把conmd.ExecuteNonQuery();
  MessageBox.Show("信息提示成功")
改成int i = conmd.ExecuteNonQuery();
if (i>0)
{
MessageBox.Show("信息提示成功")
}
else
{
MessageBox.Show("信息提示失败")
}
运行程序看会不会提示成功


检查conmd.ExecuteNonQuery();的返回值~ --------------------编程问答-------------------- 提交了吗,Commit() 了吗 --------------------编程问答-------------------- 检查conmd.ExecuteNonQuery();的返回值~
看影响行数是不是大于0 --------------------编程问答--------------------
引用 3 楼 linux7985 的回复:
应该是条件有问题


filedStudentNumber='" + tbCID.Text.Trim() + "'",

应该是条件有问题 --------------------编程问答-------------------- --------------------编程问答-------------------- 单步看看sql语句
使用oledbparameter操作 --------------------编程问答-------------------- 额、、、又是这个问题,
看下这个帖子、、、我讲过了的
http://topic.csdn.net/u/20100831/09/af496b48-8c8b-41d8-9575-832dc534ff97.html

1 你先用个固定的学号试试,看能不能更新,如果行,就说明你之前的学号没获取到,所以没有更新数据库
2 如果不能更新,在 com.ExecuteNonQuery();这儿设置int i= com.ExecuteNonQuery();再把i的值打印出来,看是否大于0,如果大于0则说明更新成功了
3 还是不行,检查sql语句,在sql server 2000中,用查询分析器,把你的语句写到里面,值都用固定的,看能不能成功,不能就是sql语句写错了,检测from where等前后是不是有空格(一般很容易忽略的),还有字段是不是都是varchar类型的,有的是数字

最后,代码应该这样规范一点写
protected void Page_Load(object sender, EventArgs e)//页面
  {
  if (!this.Page.IsPostBack)
{
this.BindInfoById(id);//调用方法,通过id获取信息到页面
} this.DataBind();
  }
 protected void BtnMod_Click(object sender, EventArgs e)//按钮
  {
  this.DataUpdate(id);//调用方法,修改数据
  }

不然容易造成数据回滚,就是你那样更新成功了,可是数据库里面还是没有更新 

好好理解一下数据回滚、、 --------------------编程问答-------------------- 调试下值进去了没,估计没走到SQL直接出MESSAGEBOX了 --------------------编程问答-------------------- 检查conmd.ExecuteNonQuery();的返回值
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,