sqldataReader :
用SqlDataReader直接一行一行的读取数据库,需要打开连接
SqlDataReader的数据源在数据库服务器上,对于程序而言,它在数据库服务器上设置了一个游标,指向一行数据,用Read()方法来对游标进行判断,当它返回false时,表示查询的数据已取完。因此,它适合数据量比较大的时候的读取,因为它不占内存,数据在数据库服务器中。它的缺点在于,当数据库服务连接断开时,不能再进行数据的读取了。
SqlDataReader reader=cmd.ExecuteReader()
while (reader.Read()) //如果下一行有数据,置reader为下一行
{
}```
sqladapter:
SqlDataAdapter联合DataSet来读取数据,一次取出,暂存到数据集,不需要打开连接
**SqlDataAdapter的方式,数据源在内存中,用一个数据集DataSet类的实例进行存储。SqlDataAdapter相当于是一个桥梁,将数据库服务器中的数据读取到内存中,它的Fill( )方法完成了这个过程。因此,对于小量的数据,它的一个优点还在于,即使当服务器连接断开时,也能继续读取数据。**
DataSet dataset = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd); //将SqlCommand与SqlDataAdapter绑定
adapter.Fill(dataset); //把结果填充到数据集,一个数据集可以有多个表
DataTable table = dataset.Tables[0]; //得到数据表
foreach(DataRow row in table.Rows) //得到表中的行
{
string name=Convert.ToString(row["UserName"]);
MessageBox.Show(name);
}```