请问,如果我有一个表格比如说时学生成绩单,列为姓名、数学成绩、语文成绩、历史成绩,类似于此类表格,但是不想每个学生进行一次数据存储,而是多录入一些,比如说十个学生的各科成绩录入完成后,一同insert到数据库,如何实现呢?
用什么控件?或者是代码是什么样的?

解决方案 »

  1.   

    这样应该是可以实习的,感觉不难。
    你可以用自动生成那种表格,生成10行,让老师录入,
    然后点保存的时候用事务处理一同Insert数据库
      

  2.   

    http://www.cnblogs.com/huangjianhuakarl/archive/2009/02/03/1381710.html
    可以参考这个
      

  3.   

    一定要用事件。
    public static bool addUser(User user)
            {
                if(user == null) return false;
                string SQLSTR1 = "insert into `user` values(@A,@B,@C,@D,@E,@F,@G)";
                string SQLSTR2 = "insert into userdetail values(@A,@B,@C,@D,@E)";
                SqlConnection conn = DBConn.SqlConnection(CONSTR);
                SqlTransaction autoCommit = conn.BeginTransaction();//建立一个事务
                SqlCommand _Sqlcommand = new SqlCommand(SQLSTR1, conn);
                _Sqlcommand.Transaction = _Transaction;            if(conn == null) return false;
                bool success = false;       
                try
                {
                 
                    SqlParameter[] _Parmeter1 = new SqlParameter[]
                    {
                        new SqlParameter("@A",SqlDbType.VarChar),  //pstat1.setString(1, user.getId());
                        new SqlParameter("@B",SqlDbType.VarChar),  // pstat1.setString(2, StringUtil.str(user.getPw()));
                        new SqlParameter("@C",SqlDbType.Int),      //  pstat1.setNull(3, Types.INTEGER);  or null
                        new SqlParameter("@D",SqlDbType.Int),        // pstat1.setInt(4,user.getDutyid());  or null
                        new SqlParameter("@E",SqlDbType.VarChar),      // pstat1.setString(5, user.getCalllevel());
                        new SqlParameter("@F",SqlDbType.VarChar),  //null  pstat1.setString(6, null);
                        new SqlParameter("@G",SqlDbType.DateTime)  //null pstat1.setDate(7, null);
                    };                _Parmeter1[0].Value = user.getId();
                    _Parmeter1[1].Value = user.getPw();
                    _Parmeter1[2].Value = user.getPw();             
                    _Parmeter1[3].Value = user.getDutyid();        //判断可能为NULL     
                    _Parmeter1[4].Value = user.getCalllevel();      //判断可能为NULL   
                          _Parmeter1[5].Value = DBNull.Value;
                          _Parmeter1[6].Value = DBNull.Value;
                             _Sqlcommand.Parameters = _Parmeter1;
                    bool rs1 = (_Sqlcommand.ExecuteNonQuery() == 1);                _Sqlcommand.CommandText = SQLSTR2;
                    SqlParameter[] _Parmeter2 = new SqlParameter[]
                    {
                          new SqlParameter("@A",SqlDbType.VarChar),  // pstat2.setString(1, user.getId());
                        new SqlParameter("@B",SqlDbType.VarChar),  //  pstat2.setString(2, user.getNickname());
                        new SqlParameter("@C",SqlDbType.VarChar),      //    pstat2.setString(3, user.getTruename());
                        new SqlParameter("@D",SqlDbType.VarChar),        //  pstat2.setString(4, user.getBirthday());
                        new SqlParameter("@E",SqlDbType.VarChar),      // pstat2.setString(5, user.getEmail());                };
                    _Parmeter2[0].Value = user.getId();
                    _Parmeter2[1].Value = user.getNickname();
                    _Parmeter2[2].Value = user.getTruename();
                    _Parmeter2[3].Value = user.user.getBirthday();  //判断可能为NULL
                    _Parmeter2[4].Value = user.getEmail();
                                   
                    bool rs2 = (_Sqlcommand.ExecuteNonQuery() == 1);
                    success = rs1 && rs2;
                }
                catch (SqlException e)
                {
                    //e.printStackTrace();
                }
                finally
                {
                    try
                    {
                        if(success)
                        {
                            autoCommit.Commit();
                        }
                        else
                        {
                            autoCommit.Rollback();
                        }
                    }
                    catch (SqlException e)
                    {
                        //e.printStackTrace();
                    }
                    conn.Close();
                }
                return success;
            } 只是一个事例,不一定对,也是别人告诉我的,希望能给你一点启发。
      

  4.   

    也可以组装成如下SQL 一句搞定
    insert into Table(a,b,c,d)
    select 'a1' as a,'b1' as b,'c1' as c,'d1' as d
    union
    select 'a2' as a,'b2' as b,'c2' as c,'d2' as d