第二章:查询和操作数据
第二章:查询和操作数据
本章目标
- 会使用DataReader对象检索数据
- 会使用Command对象操作数据
讲解内容
为什么要使用DataReader对象
当需要从数据库将数据读取到应用程序时,则需要使用DataReader对象实现。
DataReader对象概述
DataReader 类在 System.Data.SqlClient 命名空间中,对应的类是 SqlDataReader,主要用于读取表中的查询结果,并且是以只读方式读取的(即不能修改 DataReader 中存放的数据)。
正是由于 DataReader 类的特殊的读取方式,其访问数据的速度比较快,占用的服务器资源比较少。
DataReader对象的特点
1、从数据源中检索只读、只进的数据流
2、每次读取一行数据
DataReader 的主要成员
属性或方法 | 说明 |
---|---|
FieldCount | 属性,获取当前行中的列数 |
HasRows | 属性,获取 DataReader 中是否包含数据 |
IsClosed | 属性,获取 DataReader 的状态是否为已经被关闭 |
Read() | 方法,让 DataReader 对象前进到下一条记录 |
Close() | 方法,关闭 DataReader 对象 |
Get XXX (int i) | 方法,获取指定列的值,其中XXX代表的是数据类型。例如获取当前行第1列 double 类型的值,获取方法为GetDouble(o) |
DataReader 使用步骤
创建 Command 对象
1
2
3string sql = "SELECT [LoginId] ,[LoginPwd] FROM [Admin] ";
//1、创建Command对象
SqlCommand cmd=new SqlCommand(sql, conn);调用 ExecuteReader() 创建 DataReader 对象
1
2//2、调用command的ExecuteReader方法,返回DataReader对象
SqlDataReader sdr = cmd.ExecuteReader();使用 DataReader 的 Read() 方法逐行读取数据
如果要获取多条数据,可以多次调用Read方法,可使用循环。
1
2
3
4
5
6//3、使用 DataReader 的 Read() 方法逐行读取数据
sdr.Read();
while(sdr.Read()){//可循环读取数据
}读取某列的数据,(type)dataReader[ ]
可以通过SQL查询 语句的索引获取数据,sdr[0]
可以通过SQL查询语句列名来获取数据,sdr[“列名”]
获取的数据是Object对象,可将数据转换成对应的数据
1
2
3
4
5
6
7
8//4、读取数据
/* string loginId=sdr[0].ToString();
string loginPwd = sdr[1].ToString();*/
string loginId = sdr["LoginId"].ToString();
string loginPwd = sdr["LoginPwd"].ToString();
Console.WriteLine("账号\t密码");
Console.WriteLine(loginId+"\t"+loginPwd);关闭 DataReader 对象
1
2sdr.Close();//关闭
conn.Close();//关闭连接完整案例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21//创建数据库连接对象
string conString = "server=.;database=MySchool;uid=sa;pwd=sa;";
using (SqlConnection conn = new SqlConnection(conString))
{
conn.Open();
string sql = " SELECT StudentNo,StudentName,Sex FROM Student";
//1、创建Command对象
SqlCommand cmd = new SqlCommand(sql, conn);
//2、调用command的ExecuteReader方法,返回DataReader对象
SqlDataReader sdr = cmd.ExecuteReader();
//3、使用 DataReader 的 Read() 方法逐行读取数据
Console.WriteLine("学号\t姓名\t性别");
while (sdr.Read())
{
Console.WriteLine("{0}\t{1}\t{2}", sdr["StudentNo"], sdr["StudentName"], sdr["Sex"]);
}
//5、关闭
sdr.Close();
}
关闭DataReader对象
1 | cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);//执行查询 |
【完整案例代码:】
1 | //创建数据库连接对象 |
本章作业
1、管理员输入操作键“3” 时,根据输入的学号查询 相应的学生姓名并输出
2、当管理员输入操作键“4”时,根据姓名模糊查询除密码外的全部学生信息并显示,年级根据实际编号显示年级名称
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 广创科技教育-Blog!
评论