菜鸟的数据库实战-4-数据阅读器SqlDataReader

  老铁们大家好啊,我是菜鸟思奎,今天我学习的是数据库和前端的连接用到的字符串,如果有什么纰漏希望大家在评论区指正。阿里嘎多。

  我的环境是Visual Studio 2008 + Microsoft SQL Server 2008 R2,通过C#的窗体应用来调试和展示相关的界面和数据。


   我这里练习的是数据阅读器SqlDataReader的使用。首先,我们需要准备一个数据库来练习。我直接用了下面的SQL语句生成一个简单的数据库了。其中建了一个表,并在其中插入了一行数据(点击展开)。

 1 --创建数据库;
 2 
 3 USE master;
 4 IF DB_ID('EduBaseDemo') IS NOT NULL
 5     BEGIN
 6         ALTER DATABASE EduBaseDemo
 7             SET SINGLE_USER
 8             WITH ROLLBACK IMMEDIATE;
 9         DROP DATABASE EduBaseDemo;
10     END
11 CREATE DATABASE EduBaseDemo
12     ON
13         (NAME='Datafile'
14         ,FILENAME='C:DataFile.mdf')
15     LOG ON
16         (NAME='Logfile'
17         ,FILENAME='C:Logfile.ldf');
18 GO
19 
20 USE EduBaseDemo;
21 
22 --创建表;
23 ----学生表;    
24 
25 CREATE TABLE tb_Student
26     (No
27         CHAR(10)
28         NOT NULL
29         PRIMARY KEY
30     ,Name
31         VARCHAR(20)
32         NOT NULL
33     ,Gender
34         CHAR(2)
35         NOT NULL
36     ,BirthDate
37         DATE
38         NOT NULL
39     ,Class
40         VARCHAR(50)
41         NOT NULL
42     ,Speciality
43         VARCHAR(100)
44         NULL);
45 
46 INSERT tb_Student
47     (No,Name,Gender,BirthDate,Class,Speciality)
48     VALUES
49     ('3120707001','田永申','','1991-10-15','12信管','睡觉');
建立简单数据库、建表并插入一行数据

  然后再建立一个简单的Windows窗体来演示一下,就像这样:

  很显然,这里就需要用到前端和数据库的连接了,所以加上相应的命名空间:

1 using System.Data.SqlClient; 

  在“载入”按钮的Click事件中先加入以下代码:

1 SqlConnection sqlConnection = new SqlConnection();                                                  //声明并实例化SQL连接;
2     sqlConnection.ConnectionString ="Server=(local);Database=EduBaseDemo;Integrated Security=sspi"; //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
3     SqlCommand sqlCommand = new SqlCommand();                                                       //声明并实例化SQL命令;
4     sqlCommand.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
5     sqlCommand.CommandText = "SELECT * FROM tb_Student WHERE No=@No;";                              //指定SQL命令的命令文本;
6     sqlCommand.Parameters.AddWithValue("@No", "3120707001");                                        //向SQL命令的参数集合添加参数的名称、值;
7     sqlConnection.Open();                                  

  这里就是直接定义字符串sqlCommand查询'No'字段是‘3120707001’的信息,然后打开数据库连接。然后重头戏就来了,现在我们就可以用SqlDataReader来读取数据了。SqlDataReader的使用方法其实非常简单,只要用一行代码就可以完成数据的“读”操作,也就是调用SQL命令的方法ExecuteReader来执行命令,并获取数据阅读器;

1 SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(); 

  但是现在我们不知道到底它读的操作成功没有,更重要的是读了数据我们要拿来用o(╯□╰)o。我需要的只是读取了然后载入到我的UI的框里显示出来,所以,可以用一个if来判断是否成功读取,如果成功的话就把数据放到对应的控件中去:

1 if (sqlDataReader.Read())                                                                      //若数据阅读器成功读取到下一条记录(首次查询则表示第一条记录);
2     {
3         this.txb_No.Text = sqlDataReader["No"].ToString();                                  //在数据阅读器的索引器中指定列名,从而访问当前记录的指定列的值,并赋予相应控件;
4         this.txb_Name.Text = sqlDataReader["Name"].ToString();
5         this.txb_Gender.Text = sqlDataReader["Gender"].ToString();
6         this.txb_BirthDate.Text = ((DateTime)sqlDataReader["BirthDate"]).ToShortDateString(); //生日首先转换为日期时间类型,再调用ToShortDateString方法获取日期部分;
7         this.txb_Class.Text = sqlDataReader["Class"].ToString();
8         this.txb_Speciality.Text = sqlDataReader["Speciality"].ToString();
9     }

  SqlDataReader控件读取到的数据都是万能的Object格式,但是我们是没办法直接用的,所以就需要进行数据格式的转换,我这里统一用了.ToString转换成String格式(主要是省事)。凡事都有例外,BirthDate这条就是这样。在数据库中我定义的是Date,但是呢,在C#里面是没有Date这种数据类型的,这种情况下就要把它转换成类似的DateTime数据类型,然后再用ToShortString方法来获取前面的日期部分再转换成String才可以。

  当然了,作为一个(有点?)严谨的编程语言,打开了SqlDataReader以后还是要用一句话关掉它的,不然就是耍流氓了~

1 sqlDataReader1.Close();

  完美了老铁们,现在我们离出任CEO、迎娶白富美、走上人生巅峰只差临门一脚了——程序写完了要调试的吧,调试下看看就可以知道这波有没有问题了。昂…JUST DO IT!

  呐,运行一下像这样嘛

  数据都还在对吧,简直就是完美对吧,SqlDateReader的简单使用就这样啦(*^▽^*)


   今天的实战到这里就结束了,老铁们有什么问题就这直接评论讨论下?

  么么哒(づ ̄ 3 ̄)づ

原文地址:https://www.cnblogs.com/qq1353842241/p/7649656.html