asp.net(c#) DataTable 快速导入数据库

作者:袖梨 2022-06-25

DataTable表示一个与内存有关的数据表,可以使用工具栏里面的控件拖放来创建和使用,也可以在编写程序过程中根据需要独立创建和使用,最常见的情况是作为DataSet的成员使用,在这种情况下就需要用在编程过程中根据需要动态创建数据表

public void InsertTable(DataTable dt, string TabelName, DataColumnCollection dtColum)
    {
      
        //声明数据库连接
        mycon.Open();
        //声明SqlBulkCopy ,using释放非托管资源
        using (SqlBulkCopy sqlBC = new SqlBulkCopy(mycon))
        {
            //一次批量的插入的数据量
            sqlBC.BatchSize = 1000;
            //超时之前操作完成所允许的秒数,如果超时则事务不会提交 ,数据将回滚,所有已复制的行都会从目标表中移除
            sqlBC.BulkCopyTimeout = 60;

            //?定 NotifyAfter 属性,以便在每插入10000 条数据时,呼叫相应事件。
            sqlBC.NotifyAfter = 10000;
            // sqlBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
            //设置要批量写入的表
            sqlBC.DestinationTableName = TabelName;
            //自定义的datatable和数据库的字段进行对应
            //sqlBC.ColumnMappings.Add("id", "tel");
            //sqlBC.ColumnMappings.Add("name", "neirong");
            for (int i = 0; i < dtColum.Count; i++)
            {
                sqlBC.ColumnMappings.Add(dtColum[i].ColumnName.ToString(), dtColum[i].ColumnName.ToString());
            }
            //批量写入
            sqlBC.WriteToServer(dt);
        }
        mycon.Dispose();
    }
    //响应时事件
    void OnSqlRowsCopied(object sender, SqlRowsCopiedEventArgs e)
    {
        // Response.Write("
OK! ");
    }
DataAdapter.SelectCommand用于获取数据,因此它的CommandText应该是select语句;
DataAdapter.InsertCommand用于插入数据,因此它的CommandText应该是insert语句;
DataAdapter.DeleteCommand用于删除数据,因此它的CommandText应该是delete语句;
DataAdapter.UpdateCommand用于更新数据,因此它的CommandText应该是update语句;

因此你的代码应该这样写:
SelectSQL="select * from tblName";
SqlCommand SelectCmd = new SqlCommand(SelectSQL, Con);

InsertSQL="insert into tblName (Input_Time,Location_ID) values (@Input_Time,@Location_ID)";

SqlCommand InsertCmd = new SqlCommand(InsertSQL, Con);
InsertCmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Input_Time",System.Data.SqlDbType.Time));
InsertCmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Location_ID",System.Data.SqlDbType.NVarChar));

SqlDataAdapter Dad = new SqlDataAdapter();
Dad.SelectCommand = SelectCmd;
Dad.InsertCommand = InsertCmd;
Dad.Update(DT);

相关文章

精彩推荐