25分求助,怎样把DataGrid的数据批量插入到数据表中。我要的功能是:
1.我浏览一个Excel文件后,然后把绑定到DataGrid中.(DataGrid的列是不固定的),已经实现了.
2.再把指定数据库的表绑定到DropDownList中,也实现了.
3.然后选择一个对应的用户表,然后点击导入,将DataGrid的数据批量写入指定的表中,我不知道如何处理?????

解决方案 »

  1.   

    你都绑定到datagrid上了,怎么还不会呢。遍历excel的行,注意要进行数据验证,然后开启事务,插入数据,commit tran或者rollback tran
      

  2.   

    第一种:
          如果你是想把导入到DataGrid的对应的excel中的所有数据都插入到数据库的表中,那么可以如下做:
    调用下面的sql语句,把表名和excel路径换成你想要的
    insert into 表 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
    注意:这个时候是利用数据库将excel做为数据源,直接读取记录并插入到相应的表中第二种:
         如果你想把DataGrid中的部分数据导入到数据库中,可以将这么做:
      1 将excel中的数据导入到dataset中,类似代码如下:
        private DataSet CreateDataSource()
        {
            string strConn;
            strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=D:\\辽阳石化用户收集信息.xls;" + "Extended Properties=Excel 8.0;";
            OleDbConnection conn = new OleDbConnection(strConn);
            OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [sheet1$]", strConn);
            DataSet myDataSet = new DataSet();
            myCommand.Fill(myDataSet);
            return myDataSet;
        }
      2 之后你对这个dataset和DataGrid对应操作,例如我取DataGrid中第10-100条数据,就是从dataset中取10-100条数据,之后我用sqldataadepter的update(datatable dt)方法来将所有数据插入到数据库相应表中
      这里要注意:
        1 要想调用sqldataadepter的update(datatable dt)方法就必须有通过ado.net来获取数据库表对应的数据集合(假设为dt_1),
    之后,我们上面选取的数据都要添加到这个数据集合中,之后才能调用update(datatable dt)方法。
        2 这里只需给sqldataadepter的insertcommand添加语句即可这两种都能实现你的功能