有一个成绩表,要把里面的几十条的成绩修改(姓名有了),如:
姓名   语文
a       66
b       77
x       89
..........只改语文成绩,如果每次都改一条,提交一条,那太浪费资源了,也有人说用dataset,我不知道怎么用,能帮一下吗?

解决方案 »

  1.   

    也要看什么數據庫,如果是SQL2000,用dataset提交實際上還是一條一條的更新。
      

  2.   

    对SQL2000请教一下,要怎么做?
      

  3.   


    先更新数据集,然后写回数据库。参考下面:using System;
    using System.Data;
    using System.Data.SqlClient;   class PropagateChanges {
          static void Main(){
             string connString = "server=(local)\\SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI";
             string qry = @"select * from employee ";
             string upd = @"update employee set firstname = @firstname where id = @id";         SqlConnection conn = new SqlConnection(connString);         try {
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = new SqlCommand(qry, conn);            DataSet ds = new DataSet();   
                da.Fill(ds, "employee");            DataTable dt = ds.Tables["employee"];            dt.Rows[0]["firstname"] = "W";            foreach (DataRow row in dt.Rows){
                   Console.WriteLine(
                      "{0} {1}",
                      row["firstname"].ToString().PadRight(15),
                      row["lastname"].ToString().PadLeft(25));
                }            // Update employees
                SqlCommand cmd = new SqlCommand(upd, conn);
                cmd.Parameters.Add("@firstname",SqlDbType.NVarChar,15, "firstname");
                SqlParameter parm = cmd.Parameters.Add("@id",SqlDbType.Int,4,"id");
                parm.SourceVersion = DataRowVersion.Original;
                da.UpdateCommand = cmd;
                da.Update(ds, "employee");
             } catch(Exception e) {
                Console.WriteLine("Error: " + e);
             } finally {
                conn.Close();
             }
          }  
       }