有时候我们需要经常的将数据集(DataSet)导入到数据库中可是怎么办呢? 有人就说了利用Sql语句马上就可以搞定了对sql是可以搞定但是sql的拼接不可以有差错啊利用SqlParameter可以减少类型的烦恼可是如果是很多列那还不累死你
将DataSet导入Access中(OleDbDataAdapterUpdate方法 )
OleDbConnection olecon = new OleDbConnection(Provider=MicrosoftJetOLEDB;Data Source= + fileName + ;Jet OLEDB:Engine Type=);
oleconOpen();
OleDbDataAdapter oda = new OleDbDataAdapter(select * from TableName olecon);
DataSet newds = new DataSet();
try
{
OleDbCommandBuilder cmdbld = new OleDbCommandBuilder(oda);
cmdbldSetAllValues = true;
odaInsertCommand = cmdbldGetInsertCommand();
dsTables[i]BeginLoadData();
int rowcount = dsTables[i]RowsCount;
for (int n = ; n < rowcount; n++)
{
dsTables[i]Rows[n]SetAdded();
}
dsTables[i]EndLoadData();
odaUpdateBatchSize = ;
}
catch
{
}
odaUpdate(ds dsTables[i]TableName);
odaDispose();
oleconClose();
oleconDispose();
OleDbDataAdapterUpdate方法和用Sql拼接插入的效率基本上是一样的OleDbDataAdapterUpdate
其实也是一条一条的插入更新的但是他可以提高我们程序的稳定性
将DataSet导入到Sql Server中(SqlBulkCopy方法)
SqlConnection conn = new SqlConnection(sqlConnectString);
connOpen();
SqlBulkCopy sbc = new SqlBulkCopy(conn);
sbcDestinationTableName = dsTables[i]TableName;
//将数据集合和目标服务器的字段对应
for (int q = ; q < dsTables[i]ColumnsCount; q++)
{
sbcColumnMappingsAdd(dsTables[i]Columns[q]ColumnName dsTables[i]Columns[q]ColumnName);
}
try
{
sbcWriteToServer(dsTables[i]);
}
catch //(Exception ex)
{
//throw ex;
continue;
}
finally
{
dsDispose();
connClose();
sbcClose();
}
这个是不是也比sql insert也好多了这个效率要比SQL Insert快多了