目录
教学资源
教学运行
提醒实验6: SqlDataReader实验 返回
实验课程:
C#数据库系统开发
开课学院:
商学院
开课专业:
信息管理与信息系统
教材:
软件:
实验指导:
实验介绍

实验6:  SqlDataReader实验

一、实验名称和性质

 

所属课程

C#数据库系统设计

实验名称

SqlDataReader实验

实验学时

4

实验性质

□验证  □综合 □设计

必做/选做

□必做 □选做

 

二、实验目的

1.        掌握SqlCommand的对存储过程的调用方法。

2.        掌握SqlDataReader的常用方法。

三、实验的软硬件环境要求

硬件环境要求:

         PC机(单机)

 

使用的软件名称、版本号以及模块:

         Windows XP下的SQL Server 2005(或 SQL Server 2008

四、知识准备

1SqlCommand对象允许你指定在数据库上执行的操作的类型。比如,你能够对数据库中的行数据执行selectinsertmodify以及delete命令。

2SqlCommand的常用属性

属性

说明

CommandType

解释CommandText的属性,值可以是Text、StoredProcedure、TableDirect 。默认值为Text。

CommandText

CommandType设置为StoredProcedure时,CommandText存放的就是所以执行的存储过程的名称,为TEXT时是T-SQL语句

Connection

Connection属性包含SqlCommand用于与数据库通信的SqlConnection对象。

CommandTimeout

CommandTimeout指定了Command等待查询结果第一行数据到达的超时时间(单位为秒) , 默认值为30。如果在CommandTimeout时间内仍未完成查询,则Command将引发异常。

3SqlCommand的常用方法

 

2.创建SqlCommand对象的方法

1直接创建一个新实例,然后设置适当属性:

        SqlCommand cmd = new SqlCommand();

        cmd.Connection = conn;

        cmd.CommandText = strSQL; 

2 利用构造函数指定查询字符串和SqlConnection连接

        SqlCommand cmd = new SqlCommand(strSQL,conn);

3 调用Sqlconnection类的CreateCommand方法:

        SqlCommand cmd = conn.CreateCommand();

        cmd.CommandText = strSQL;

3. SqlCommandParaMeters属性:Transact-SQL语句或存储过程的参数。默认值为空集合。当SQL语句中出现未知的情况时可以使用参数来做。要在SQL语句中的可变参数前加@以区分是可变参数。

SqlCommandParaMeters中增加参数的方法:

cmd.Parameters.Add("@ly_title",SqlDbType.NVarChar,20); //增加@ly_title参数,类型为NVarChar
cmd.Parameters["@ly_title"].Value = "title"; //给参数@ly_title赋值

 

4. 存储过程的调用

SqlCommandCommandType属性值StoredProcedure时,CommandText的属性值应该设置为存储过程的名字。

 

5. SqlDataReader形成的是数据流,并且数据流是以只进且只读的形式。我们可以形容它向一股瀑布一样,只往前进。

若要创建 SqlDataReader,必须调用SqlCommand 对象的 ExecuteReader 方法,而不直接使用构造函数。

       SqlDataReader sdr=cmd.ExecuteReader();

  6. SqlDataReader对象中内容的显示

SqlDataReader sdr = cmd.ExecuteReader();

while (sdr.Read())

    {

       Console.Write(sdr[0].ToString());

       Console.Write(sdr[1].ToString());

                   Console.Write(sdr[2].ToString());

    }

7. SqlDataReader对象中多个数据集合的处理

do {

      while (sda.Read())

      { txtResult.Text += sda[0] + "," + sda[1] + "\r\n";     }

      } while (sda.NextResult());

8. SqlDataReader打开时,可以使用GetSchemaTable()方法来获取结果集的架构信息(返回表的结构信息)。

u  DataTable dt = sda.GetSchemaTable();

u  dataGridView1.DataSource = dt;

 

五、实验内容

1.有如下的T-SQL语句,用SqlCommand对象将1个数据集读入SqlDataReader对象。在dataGrid上将SqlDataReader中的数据集中数据显示出来。

String sqlStr=”select * from s”:

 

2.下面是1个存储过程,分别用SqlCommand对象进行调用并将结果显示在界面上。编程完成:在界面中输入学号,调用如下存储过程并将结果显示在界面上。

create proc Proc_ParaSelect

@sno varchar(10)

as

select s.SNO,sname,c.cno,cname,grade from S,C,sc

where s.SNO=sc.sno and c.CNO=sc.cno and s.SNO=@sno

order by sno

 

exec Proc_ParaSelect '200512'

 

3. 编写存储过程proc_CourseNum:在界面上输入课程名,查询选课学生信息,并将选课人数返回。(要求:返回的选课人数要用output带出)。并在界面中输入课程名,在调用存储过程proc_CourseNum在界面上显示选课学生信息,同时显示选课人数。

 

4. 拓展题:

界面如下:

窗体的Load()事件中将系部信息加入trvStudent(树视图)中,并将学生姓名加入到各系部节点下。双击学生姓名节点,在右边的文本框中显示学生的详细信息。

(提示:在加入学生节点时,为方便在数据表中查找,将学生的姓名作为节点的Text属性,而将学生的学号作为Tag属性。

 

 

六、实验报告

针对每个实验写出操作步骤和结果,编写程序时要注意容错处理。