以下是使用SqlDataReader
的示例代码:
// Working with SQLServer and C#
// Retrieve all rows
cmd.CommandText = "SELECT some_field FROM data";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader.GetString(0));
}
}
编辑:
我的意思是我想要了解在使用SQLite时,在while循环(在SqlDataReader
的情况下)从数据库中检索数据时是否存在相同的机制。
// working with SQLite and Java
if (cursor.moveToFirst()) {
do {
String data = cursor.getString(cursor.getColumnIndex("data"));
// do what ever you want here
} while(cursor.moveToNext());
}
cursor.close();
不,除非您的命令正在调用使用游标的存储过程,否则服务器端没有游标。当您使用SqlDataReader时,服务器返回一个普通的SQL结果集,一次一行。显然,数据必须在你可以读取它之前的某个地方,而那个地方将是SQL Server和驱动程序管理的缓冲区。
如果您要使用像Dataset这样的东西,那么所有的行都会立即在RAM中。
当您使用返回许多dbsets的游标时,您可以获得许多结果集:
while (oSqlDataReader.HasRows)
{
while (oSqlDataReader.Read())
{
// oSqlDataReader.Getdata...
}
oSqlDataReader.NextResult();
}