日期:2014-05-18  浏览次数:20423 次

SqlDataReader 为什么返回不了我修改后的数据???
for (int i = 0; i < GridView1.Rows.Count; i++)
  {
  if (check.Checked == true)
  {
  SqlConnection sms_conn = new SqlConnection(study.sqlconn);
  string SqlStr1 = "SELECT 课程.学科学分,学生.所得学分 from 课程,学生,学生选课表 where 课程.课程编号=学生选课表.课程编号 AND 学生.学号=学生选课表.学号 AND 课程.教师编号='" + study.number + "'";
  if (sms_conn.State.ToString() == "Closed")
  {//连接如果关闭,打开
  sms_conn.Open();
  }
  SqlCommand cmd = new SqlCommand(SqlStr1, sms_conn); //创建操作数据库对象
  SqlDataReader sdr = cmd.ExecuteReader(); //执行查询,将结果放到DataReader对象
  if (sdr.Read()) //如果查询到课程信息,显示
  {

  float xuekexuefen=float.Parse(sdr["学科学分"].ToString());
  float suodexuefen =float.Parse(sdr["所得学分"].ToString());
  float zongshu = xuekexuefen + suodexuefen;
  string sql1 = "update 学生 set 所得学分 = '" + zongshu + "' where 学号 = '" + ms + "'";
  SqlCommand ud = new SqlCommand(sql1, sms_conn);
   
  sms_conn.Close();
  }
   
  }
  }
我想修改数据库的数据,用了上面的方法,但是就是修改不了,数据还是保持原样,请教各位大虾是什么原因啊???

------解决方案--------------------
楼主第二个command对象ud 没有执行ud.ExecuteNonQuery()这个方法,这样可以执行UPDATE语句
------解决方案--------------------
C# code

//LZ应多看些书,稍作修改,应该可以使用
if (sdr.Read()) //如果查询到课程信息,显示 
{ 
  float xuekexuefen=float.Parse(sdr["学科学分"].ToString()); 
  float suodexuefen =float.Parse(sdr["所得学分"].ToString()); 
  float zongshu = xuekexuefen + suodexuefen;    
  sdr.Close();
  string sql1 = "update 学生 set 所得学分 =  '" + zongshu + "' where 学号 = '" + ms + "'"; 
  int rows = cmd.ExecuteNonquery();            
  sms_conn.Close(); 
}