我的DataSet中的数据是用户登录时才填充该用户的数据,而有个列需要定时从数据源更新到DataSet.Tables("users")中的现有行
我尝试的做法是:
string userlist = "";
foreach (var pRow in DataSet.Tables("users").Rows) {
userlist += pRow("Sid").ToString + ",";
}
userlist = userlist.Remove(userlist.Length - 1, 1);
string Sql = "select Sid,F_DB from [users] where Sid in (" + userlist + ")";
Adapter = new SqlDataAdapter(Sql, Conn);
Adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
int ds = Adapter.Fill(DataSet, "users");
这样做时,DataSet.Tables("users")中的现有行除了Sid,F_DB外的其他列会被清空...麻烦大家指点一下该怎么做才能只填充F_DB列?还有where in语句支持多大的集合?当userlist内包含上千个ID时,where in是否支持?
我尝试的做法是:
string userlist = "";
foreach (var pRow in DataSet.Tables("users").Rows) {
userlist += pRow("Sid").ToString + ",";
}
userlist = userlist.Remove(userlist.Length - 1, 1);
string Sql = "select Sid,F_DB from [users] where Sid in (" + userlist + ")";
Adapter = new SqlDataAdapter(Sql, Conn);
Adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
int ds = Adapter.Fill(DataSet, "users");
这样做时,DataSet.Tables("users")中的现有行除了Sid,F_DB外的其他列会被清空...麻烦大家指点一下该怎么做才能只填充F_DB列?还有where in语句支持多大的集合?当userlist内包含上千个ID时,where in是否支持?
我的当前进程有专门的线程将DataSet.Tables("users")除F_DB列外的其他列写入数据源,而F_DB会被外部进程修改数据,所以我需要定时填充F_DB列到当前进程的DataSet.Tables("users")来通知用户F_DB列的值因为DataSet.Tables("users")中其他列的数据每微妙都有可能被其他线程修改,如果从数据源提取出所有列,会导致数据丢失我想过将F_DB列填充到一个临时DataSet表,然后将F_DB列复制到DataSet.Tables("users"),但因为数据量很大,这样会影响性能SqlDataAdapter.Fill有没有办法只填充指定的列?
大哥没看我代码啊....我就是这样做的,但这样做会使DataSet.Tables("users")中Sid,F_DB外的其他列会被清空
问题解决,感谢!
DataTable.Merge的效率比自己写代码合并2个表高N个档次,没有详细研究DataSet,以前都不知道有DataTable.Merge这个方法...再次感谢!