62,025
社区成员
发帖
与我相关
我的任务
分享
public IEnumerable<IDataReader> ExcuteSqlDataList(List<ExtSqlInfo> sqlList, Dictionary<int, List<SqlWhereOperatorInfo>> whereOpGroupInfoMap)
{
SortSqlList(sqlList);
string connstr = ConfigurationManager.ConnectionStrings["Conn1"].ConnectionString;
DatabaseHelper dbHelper = new DatabaseHelper(connstr, Providers.ODBC);
//using(DatabaseHelper dbHelper = new DatabaseHelper(connstr, Providers.ODBC))
{
for (int i = 0, imax = sqlList.Count; i < imax; i++)
{
ExtSqlInfo sqlInfo = sqlList[i];
List<OdbcParameter> parameterList;
string sql = GetSql(sqlInfo, whereOpGroupInfoMap, out parameterList);
switch ((SqlTypeEnum)sqlInfo.SqlType)
{
case SqlTypeEnum.NonQuery:
int ret = dbHelper.ExecuteNonQuery(sql, parameterList != null ? parameterList.ToArray() : null, connectionstate: BaseDal.ConnectionState.KeepOpen);
if (ret < 0)
yield return null;
break;
case SqlTypeEnum.DataSet:
DbDataReader dr = dbHelper.ExecuteReader(sql, parameterList != null ? parameterList.ToArray() : null, connectionstate: BaseDal.ConnectionState.KeepOpen);
yield return dr;
break;
default:
yield return null;
break;
}
}
}
}
原来是dataset 把datareader改成dataset 本质是一样的 我现在是单线程读datareader 如果多线程读datareader也是报错 dataset直接把数据全部塞进内存 如果多线程跑这个方法就报错 单线程没问题