string sql = "delete from sports_xkmd where id=@id";
SqlCommand comm = new SqlCommand(sql, conn);
i = comm.ExecuteNonQuery();
if (i >= 1)
{
     sql = "update sports_kbk set yxrs=yxrs-1 where kcxh=@kcxh";
     comm = new SqlCommand(sql, conn);
     comm.Parameters.AddWithValue("@kcxh", Convert.ToInt32(str[1]));
     comm.ExecuteNonQuery();
}代码的意思是学生删除自己的已选课程,如果删除成功(i=1),那么执行更新语句。
每次选课的时候,count(*)和sum(yxrs)【已选人数】总是差别几个,请问是什么问题。

解决方案 »

  1.   

    将你的sql语句到查询分析器中执行一下,看结果是否与程序输出一致,如果一致,则说明程序没有问题.
    注意程序执行时数据库中的数据与在查询分析器中执行时数据库中的数据一致.
      

  2.   

    代码是没有贴完整,数据库有两个表,一个是选修课开课表,纪录教师的上课课程和该课程限选人数等信息,还有一个表是学生选课表。学生选一门课程(insert),开课表中的字段(yxrs)已选人数+1;退选(delete),开课表中的字段(yxrs)已选人数-1;每次选课大概8000人,count(*)和sum(yxrs)的数据差别也不大,也就3,4左右。
      

  3.   

    你的更新记录操作的SQL是否可能在某些特定情况下执行过程中出现错误?
      

  4.   

    执行过程中没有错误,已经使用了3个学期了,很稳定,就是出现了count(*)和sum(yxrs)的数据差别。每次3-4个左右
      

  5.   

    代码真乱你可以把两个SQL 合并成一个,使用一个事务。
      

  6.   


            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection();
            System.Data.SqlClient.SqlTransaction stran = conn.BeginTransaction();
            string sql = "...";
            System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, conn, stran);
            stran.Commit(); //提交
            stran.Rollback(); //回滚
    自己加一些Try catch进去