使用OleDbDataReader读取多线程数据

时间:2018-03-22 06:15:57

标签: c# multithreading oledbdatareader

我试图通过在Web服务中使用OleDbDataReader从sql server读取数据,如下所示:

OleDbDataReader reader = command.ExecuteReader();
List<JPH> returnList = new List<JPH>();
while (reader.Read())
{
    JPH item = new JPH();`

    DateTime tmp = DBTypesEvaluator.ToDateTime(reader["POSITIONDATE"]);
    item.t = Functions.GetTimeFullStringSepFormat(tmp);

    item.lC = DBTypesEvaluator.ToString(reader["LOCATION"]);
    item.lT = DBTypesEvaluator.ToFloat(reader["LATITUDE"]);
    item.lN = DBTypesEvaluator.ToFloat(reader["LONGITUDE"]);
    item.iG = DBTypesEvaluator.ToInteger(reader["IGNITION"]);
    item.sP = DBTypesEvaluator.ToInteger(reader["SPEED"]);
    item.oD = Functions.RoundToDigits( DBTypesEvaluator.ToFloat(reader["ODOMETER"]));
    item.tF = Functions.RoundToDigits( DBTypesEvaluator.ToFloat(reader["TOTALFUEL"]));
    item.fL = DBTypesEvaluator.ToString(reader["FUELLEVEL"]);

    returnList.Add(item);
}
connection.Close();
return returnList;

虽然查询结果很快返回,但由于while循环,从服务返回需要很长时间。

为了解决这个问题,我试图像这样使用OleDbAdapter和DataSet:

OleDbDataAdapter adapter = new OleDbDataAdapter(command);
DataSet ds = new DataSet();
adapter.Fill(ds);

通过使用OleDbAdapter和DataSet,我将数据分成几部分并通过多线程处理它们。 但是,在这个时候,填充功能需要很长时间。 因此,有没有办法从.net中的多线程读取查询数据? 感谢。

0 个答案:

没有答案