简便的将DataSet导入到数据库中

摘要:
try{OleDbCommandBuildermdbld=newOleDbCommand Builder(oda);introwcount=ds.Tables[i].Rows.Count;SqlBulkCopysbc=newSqlBulkCopy(conn);

      有时候我们需要经常的将数据集(DataSet)导入到数据库中,可是怎么办呢? 有人就说了,利用Sql语句马上就可以搞定了,对,sql是可以搞定,但是sql的拼接不可以有差错啊,利用SqlParameter可以减少类型的烦恼,可是如果是很多列,那还不累死你。

1、将DataSet导入Access中(OleDbDataAdapter.Update方法 )

OleDbConnection olecon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Jet OLEDB:Engine Type=5");
olecon.Open();

OleDbDataAdapter oda = new OleDbDataAdapter("select * from TableName" , olecon);
DataSet newds = new DataSet();
try
{
OleDbCommandBuilder cmdbld = new OleDbCommandBuilder(oda);
cmdbld.SetAllValues = true;
oda.InsertCommand = cmdbld.GetInsertCommand();
ds.Tables[i].BeginLoadData();
int rowcount = ds.Tables[i].Rows.Count;
for (int n = 0; n < rowcount; n++)
{
ds.Tables[i].Rows[n].SetAdded();
}

ds.Tables[i].EndLoadData();
oda.UpdateBatchSize = 1000;
}
catch
{

}
oda.Update(ds, ds.Tables[i].TableName);
oda.Dispose();

olecon.Close();
olecon.Dispose();

OleDbDataAdapter.Update方法和用Sql拼接插入的效率基本上是一样的,OleDbDataAdapter.Update

其实也是一条一条的插入更新的。但是他可以提高我们程序的稳定性。

2、将DataSet导入到Sql Server中(SqlBulkCopy方法

SqlConnection conn = new SqlConnection(sqlConnectString);

                conn.Open();
                SqlBulkCopy sbc = new SqlBulkCopy(conn);
                sbc.DestinationTableName = ds.Tables[i].TableName;

                //将数据集合和目标服务器的字段对应
                for (int q = 0; q < ds.Tables[i].Columns.Count; q++)
                {
                    sbc.ColumnMappings.Add(ds.Tables[i].Columns[q].ColumnName, ds.Tables[i].Columns[q].ColumnName);
                }
                try
                {
                    sbc.WriteToServer(ds.Tables[i]);
                }
                catch //(Exception ex)
                {
                    //throw ex;
                     continue;
                }
                finally
                {
                    ds.Dispose();
                    conn.Close();
                    sbc.Close();
                }

这个是不是也比sql insert也好多了,这个效率要比SQL Insert快多了。

比较的弱智,大家见笑了。

说明: 在列名匹配的时候,千万不要加入“[]”这样的字符。容易导致给定的 ColumnName“”与数据源中的任意列均不匹配。

免责声明:文章转载自《简便的将DataSet导入到数据库中》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇node.js---基础学习git revert 与 git reset下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java 迭代器删除元素ConcurrentModificationException异常。

Java是不支持容器类在使用迭代器迭代过程中,使用如 list.remove(obj)方法删除元素。否则会抛出ava.util.ConcurrentModificationException异常。应该使用iterator.remove()方法删除当前迭代到的元素。 这是因为Java集合中有一种叫fail-fast的机制,即如果多个线程对同一个集合的内容进行...

SpringBoot文件分片上传

背景 最近好几个项目在运行过程中客户都提出文件上传大小的限制能否设置的大一些,用户经常需要上传好几个G的资料文件,如图纸,视频等,并且需要在上传大文件过程中进行优化实时展现进度条,进行技术评估后针对框架文件上传进行扩展升级,扩展接口支持大文件分片上传处理,减少服务器瞬时的内存压力,同一个文件上传失败后可以从成功上传分片位置进行断点续传,文件上传成功后再次上...

如何控制el-image预览图片的大小

使用el-image标签,发现预览图太大,占满了整个浏览器 代码如下: <el-image :src="scope.row.carouselUrl" :preview-src-list="scope.row.photo"/> 如何才能控制预览图片的大小呢?如果我想不使用image组件又想使用预览大图的功能是否可行呢?我们可以使用image-vi...

从js向Action传中文参数出现乱码问题的解决方法

Action获取jsp表单中的中文参数,只要整个项目都采用UTF-8编码格式都不会出现乱码问题;但JSP中用到JS,并从JS向Action传中文参数,就会出现中文乱的现象     做项目的时候,发现Action获取jsp表单中的中文参数,只要整个项目都采用UTF-8编码格式都不会出现乱码问题;但JSP中用到JS,并从JS向Action传中文参数,就会出现中...

Spring Boot @Component注解下的类 @Autowired 为null

Spring Boot @Component注解下的类 @Autowired 为null【原文】 @Component public class ComponentClass { @Autowired private JedisClient jedisClient; public static Co...

WPF 实现已绑定集合项目的移除时动画过渡

信不信由你,这个场景貌似没有官方的完美解决方案。我认为这个要求一点都不过分,花了很长时间 bai google du,就是没找到好的方案。这是我花了一天时间才搞通的一个方案,跟大家分享,虽然仍然不太完美,但是希望对大家有用。 对完美的憧憬 一个已绑定到 ItemsControl 的集合,是不能通过 ItemsControl.Items 属性来访问的,如果你...