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

news/2024/7/24 6:51:25 标签: 数据库

      有时候我们需要经常的将数据集(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“”与数据源中的任意列均不匹配。

 

 

转载于:https://www.cnblogs.com/stonespawn/archive/2008/10/24/stonespawn.html


http://www.niftyadmin.cn/n/1014083.html

相关文章

wxWidgets中字符串操作例子

在wxWidgets中&#xff0c;常见的字符串不能直接使用&#xff0c;而且照顾到跨平台的特性&#xff0c;所以字符串的处理通常是比较繁琐的&#xff0c;以下的代码均是工作中所所用到的片段。通过这样的方式可以将字符串进行格式化。并且由wxMessageBox弹出对话框&#xff0c;将字…

IDEA项目启动报错Command line is too long

报错内容&#xff1a; Error running **** Error running****. Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun. 解决方法&#xff1a; 1. 点击Edit Configurations 2.点击Environment 3. 修改Shorten comm…

Silverlight(HTC手机的日期效果)日历控件源代码下载

Silverlight&#xff08;HTC手机的日期效果&#xff09;日历控件源代码下载效果&#xff1a;下载&#xff1a;http://www.reflectionit.nl/download.aspx?URLFlipClockApp.zip转载于:https://blog.51cto.com/dotfun/285677

防御ARP欺骗的解决

1 接入交换机/网关手动绑定目前主流的安全接入交换机/网关都具有IP、MAC绑定功能&#xff0c;像锐捷网络的安全接入交换机甚至提供了6元素&#xff08;IP、MAC、VLAN ID、交换机端口号、用户名、密码&#xff09;的绑定&#xff0c;可以通过在接入交换机上将下联每台主机的IP和…

Windows添加路由时报错:请求的操作需要提升。

具体报错如下&#xff1a; C:\Users\admin>route -p add 192.168.30.0 mask 255.255.255.0 192.168.60.1请求的操作需要提升。 解决方法&#xff1a; 以管理员身份运行cmd即可

国家发展改革委、财政部关于加快推进国家电子政务外网建设工作的通知

国家发展改革委、财政部关于加快推进国家电子政务外网建设工作的通知&#xff08;发改高技[2009]988号&#xff09;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />中央和国家机关各部委&#xff0c;各省、自治区、直辖市及计划…

在调试的时候碰到了Render process gone.问题

问题 在运行vueelementui的时候碰到了Debugging connection was closed.Reason:Render process gona. 不知道是哪里出了问题&#xff0c;从git上重新拉一下代码就可以运行了。

[所见非所得]使用参数控制水晶报表的部分元素不打印

一般我们在使用水晶报表的时候&#xff0c;打印的时候是所见即所得的&#xff0c;就是模板上有什么&#xff0c;肯定会打印出什么来。 这就有一个问题&#xff0c;比如说打印票据&#xff0c;为了呈现效果&#xff0c;我们一般会做个底图&#xff0c;而只要求打印出数字来。 以…