我用SqlCommandBuilder 实现的批量更新代码如下:
public DataSet UpdateByDataSet(DataSet ds)
{
SqlConnection conn = new SqlConnection(connstr);
SqlDataAdapter myAdapter = new SqlDataAdapter();
SqlCommand myCommand = new SqlCommand("select * from t_ndjh", conn);
myAdapter.SelectCommand = myCommand;
SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);
try
{
lock (this) //处理并发情况(分布式情况)
{
conn.Open();
myAdapter.Fill(ds, "a");
myAdapter.Update(ds,"a");
//conn.Close();
}
return ds;
}
catch (Exception err)
{
conn.Close();
return ds;
//throw new BusinessException(err);
}
}调式过了,执行没有错误。但是 数据库里的数据没有更新还是原来的数据怎么回事呢?大家帮我看看是怎么回事?
public DataSet UpdateByDataSet(DataSet ds)
{
SqlConnection conn = new SqlConnection(connstr);
SqlDataAdapter myAdapter = new SqlDataAdapter();
SqlCommand myCommand = new SqlCommand("select * from t_ndjh", conn);
myAdapter.SelectCommand = myCommand;
SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);
try
{
lock (this) //处理并发情况(分布式情况)
{
conn.Open();
myAdapter.Fill(ds, "a");
myAdapter.Update(ds,"a");
//conn.Close();
}
return ds;
}
catch (Exception err)
{
conn.Close();
return ds;
//throw new BusinessException(err);
}
}调式过了,执行没有错误。但是 数据库里的数据没有更新还是原来的数据怎么回事呢?大家帮我看看是怎么回事?
myAdapter.UpdateCommand.Parameters.Add("@contract", SqlDbType.NVarChar, 15, "contract");
conn.Open();
myAdapter.Update(ds);