蓝派网(www.lan27.com)-精选网络资源,分享和交流! 文章首页站内搜索在线手册广告代码酷站欣赏万年历
您现在的位置: 蓝派网 >> 文章中心 >> 网络编程 >> .NET >> ASP.NET >> 正文

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

作者:佚名    文章来源:51cto blog ccj188    更新时间:2009-5-30 18:29:53

有时候我们需要经常的将数据集(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快多了。

 


发表评论】【打印此文】【关闭窗口】【点击数:
★好玩的休闲小游戏★