数据未插入到数据库表中的SqlDataAdapter更新后
问题描述:
我想使用SqlDataAdapter
从一个数据库表到另一个数据库表,但是从其他表导入行后没有效果数据插入到数据库表数据未插入到数据库表中的SqlDataAdapter更新后
代码
DataTable table1 = objDataset1.Tables[0];
DataTable tb = table1.Clone();
DataSet ds = new DataSet();
string ConnString = @"DataSource=.\SQLExpress;Database=WICC;Trusted_Connection=true;Connection Timeout=180;";
SqlConnection con = new SqlConnection(ConnString);
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM tblSitePMRDetail", con);
SqlCommandBuilder build = new SqlCommandBuilder(adapter);
adapter.Fill(tb);
con.Open();
foreach (DataRow dr in table1.Rows)
{
tb.ImportRow(dr);
}
adapter.Update(tb);
con.Close();
表为什么不更新?
答
如果违反了限制条件,ImportRow将会失败,并且只会添加,因此请检查表中最后的行数。您可能会发现没有人被添加,特别是如果涉及主键。
鉴于tb是从table1克隆的,我建议您跳过adapter.Fill,除非您知道table1中的行状态不正确。或者你可能想尝试使用tb.Load(table1.CreateDataReader(),LoadOption.Upsert);