Datatable更新数据库

有一个datatable变量dt里存的是某表下某字段的所有值,我要把这个dt更新到这个表,该怎么处理。(注意不能一条一条读出来,一条一条insert进去)
2026年09月29日 06:08
有5个网友回答
网友(1):

可以用SqlBulkCopy批量导入,命名空间:System.Data.SqlClient;
部分代码参考:
SqlConnection sqlConn = new SqlConnection(strConn);
sqlConn.Open();
SqlTransaction tran = sqlConn.BeginTransaction();
using (SqlBulkCopy oBC= new SqlBulkCopy (sqlConn,SqlBulkCopyOptions.Default, tran))
{
oBC.ColumnMappings.Add("fld1", "fld1"); //第一个参数为源数据(datatable变量)列的字段,第二个参数为目标数据(数据库表)列的字段
oBC.ColumnMappings.Add("fld2", "fld2");
oBC.ColumnMappings.Add("fld3", "fld3");
oBC.DestinationTableName = "TaleName"; //TaleName为数据库中的表名
oBC.WriteToServer(oDataTable);//oDataTable为你的datatable实例
tran.Commit();
sqlConn.Close();
}

网友(2):

SqlCommandBuilder cmd = new System.Data.SqlClient.SqlCommandBuilder(datp);
SqlDataAdapter datp = new SqlDataAdapter("select * from tb","server=.;database=test;uid=sa;pwd=sa");
datp.Update(dtable);

网友(3):

sqlserver 有个批量更新 。
update table1
set 字段=值
from table2
where table1.key = table2.key
条件还能自己加。可以更新一批符合的数据

网友(4):

Datatable更新数据库
SqlDataAdapter adapter = new SqlDataAdapter(strSql, strConn);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
DataSet ds = new DataSet();
adapter.Fill(ds, "Titles");

//插入记录
DataTable table = ds.Tables["Titles"];
DataRow row = table.NewRow();
row["Title_id"] = "JP1001";
row["title"] = "programming Microsoft .NET";
row["price"] = 59.99m;
row["ytd_sales"] = 100000;
row["type"] = "business";
row["pubdate"] = new DateTime(2002, 5, 1);
table.Rows.Add(row);
//更新数据库
adapter.Update(table);

网友(5):

pdate 一下就OK咯