我的数据库表中有数百万条记录,我试图将其存储在数据集中(我使用数据集来创建Lucene索引。)
问题是数据集无法处理数百万条记录,而且它会让我出现内存异常。
public DataSet GetDataSet(string sqlQuery)
{
DataSet ds = new DataSet();
SqlConnection sqlCon = new SqlConnection("Server=M-E-DB2;Database=IS;Trusted_Connection=True;");
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = sqlCon;
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = sqlQuery;
SqlDataAdapter sqlAdap = new SqlDataAdapter(sqlCmd);
sqlAdap.Fill(ds);
sqlCon.Close();
return ds;
}
有人可以建议我替代处理内存不足异常,记住我的情况。
感谢。
答案 0 :(得分:3)
您可以使用 SqlDataReader
逐行获取using (connection)
{
SqlCommand command = new SqlCommand();
sqlCmd.Connection = sqlCon;
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = sqlQuery;
connection.Open();
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
/// you can get values
}
}
reader.Close();
}