菜鸟的数据库实战-4-数据阅读器SqlDataReader
老铁们大家好啊,我是菜鸟思奎,今天我学习的是数据库和前端的连接用到的字符串,如果有什么纰漏希望大家在评论区指正。阿里嘎多。
我的环境是Visual Studio 2008 + Microsoft SQL Server 2008 R2,通过C#的窗体应用来调试和展示相关的界面和数据。
我这里练习的是数据阅读器SqlDataReader的使用。首先,我们需要准备一个数据库来练习。我直接用了下面的SQL语句生成一个简单的数据库了。其中建了一个表,并在其中插入了一行数据(点击展开)。
--创建数据库; USE master;
IF DB_ID('EduBaseDemo') IS NOT NULL
BEGIN
ALTER DATABASE EduBaseDemo
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
DROP DATABASE EduBaseDemo;
END
CREATE DATABASE EduBaseDemo
ON
(NAME='Datafile'
,FILENAME='C:\DataFile.mdf')
LOG ON
(NAME='Logfile'
,FILENAME='C:\Logfile.ldf');
GO USE EduBaseDemo; --创建表;
----学生表; CREATE TABLE tb_Student
(No
CHAR(10)
NOT NULL
PRIMARY KEY
,Name
VARCHAR(20)
NOT NULL
,Gender
CHAR(2)
NOT NULL
,BirthDate
DATE
NOT NULL
,Class
VARCHAR(50)
NOT NULL
,Speciality
VARCHAR(100)
NULL); INSERT tb_Student
(No,Name,Gender,BirthDate,Class,Speciality)
VALUES
('','田永申','男','1991-10-15','12信管','睡觉');
建立简单数据库、建表并插入一行数据
然后再建立一个简单的Windows窗体来演示一下,就像这样:

很显然,这里就需要用到前端和数据库的连接了,所以加上相应的命名空间:
using System.Data.SqlClient;
在“载入”按钮的Click事件中先加入以下代码:
SqlConnection sqlConnection = new SqlConnection(); //声明并实例化SQL连接;
sqlConnection.ConnectionString ="Server=(local);Database=EduBaseDemo;Integrated Security=sspi"; //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
SqlCommand sqlCommand = new SqlCommand(); //声明并实例化SQL命令;
sqlCommand.Connection = sqlConnection; //将SQL命令的连接属性指向SQL连接;
sqlCommand.CommandText = "SELECT * FROM tb_Student WHERE No=@No;"; //指定SQL命令的命令文本;
sqlCommand.Parameters.AddWithValue("@No", "3120707001"); //向SQL命令的参数集合添加参数的名称、值;
sqlConnection.Open();
这里就是直接定义字符串sqlCommand查询'No'字段是‘3120707001’的信息,然后打开数据库连接。然后重头戏就来了,现在我们就可以用SqlDataReader来读取数据了。SqlDataReader的使用方法其实非常简单,只要用一行代码就可以完成数据的“读”操作,也就是调用SQL命令的方法ExecuteReader来执行命令,并获取数据阅读器;
SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();
但是现在我们不知道到底它读的操作成功没有,更重要的是读了数据我们要拿来用o(╯□╰)o。我需要的只是读取了然后载入到我的UI的框里显示出来,所以,可以用一个if来判断是否成功读取,如果成功的话就把数据放到对应的控件中去:
if (sqlDataReader.Read()) //若数据阅读器成功读取到下一条记录(首次查询则表示第一条记录);
{
this.txb_No.Text = sqlDataReader["No"].ToString(); //在数据阅读器的索引器中指定列名,从而访问当前记录的指定列的值,并赋予相应控件;
this.txb_Name.Text = sqlDataReader["Name"].ToString();
this.txb_Gender.Text = sqlDataReader["Gender"].ToString();
this.txb_BirthDate.Text = ((DateTime)sqlDataReader["BirthDate"]).ToShortDateString(); //生日首先转换为日期时间类型,再调用ToShortDateString方法获取日期部分;
this.txb_Class.Text = sqlDataReader["Class"].ToString();
this.txb_Speciality.Text = sqlDataReader["Speciality"].ToString();
}
SqlDataReader控件读取到的数据都是万能的Object格式,但是我们是没办法直接用的,所以就需要进行数据格式的转换,我这里统一用了.ToString转换成String格式(主要是省事)。凡事都有例外,BirthDate这条就是这样。在数据库中我定义的是Date,但是呢,在C#里面是没有Date这种数据类型的,这种情况下就要把它转换成类似的DateTime数据类型,然后再用ToShortString方法来获取前面的日期部分再转换成String才可以。
当然了,作为一个(有点?)严谨的编程语言,打开了SqlDataReader以后还是要用一句话关掉它的,不然就是耍流氓了~
sqlDataReader1.Close();
完美了老铁们,现在我们离出任CEO、迎娶白富美、走上人生巅峰只差临门一脚了——程序写完了要调试的吧,调试下看看就可以知道这波有没有问题了。昂…JUST DO IT!
呐,运行一下像这样嘛

数据都还在对吧,简直就是完美对吧,SqlDateReader的简单使用就这样啦(*^▽^*)
今天的实战到这里就结束了,老铁们有什么问题就这直接评论讨论下?
么么哒(づ ̄ 3 ̄)づ
菜鸟的数据库实战-4-数据阅读器SqlDataReader的更多相关文章
- C#与数据库访问技术总结(十一)之数据阅读器(DataReader)1
数据阅读器 当执行返回结果集的命令时,需要一个方法从结果集中提取数据. 处理结果集的方法有两个: 第一,使用数据阅读器(DataReader): 第二,同时使用数据适配器(Data Adapter)和 ...
- C#与数据库访问技术总结(十二)数据阅读器(DataReader)2
遍历数据阅读器中的记录 当ExecuteReader方法返回DataReader对象时,当前光标的位置在第一条记录的前面. 必须调用阅读器的Read方法把光标移动到第一条记录,然后,第一条记录将变成当 ...
- 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释
在自学杨中科老师的视频教学时,拓展编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时 会产生Additional information: 阅读器关闭时尝试调用 ...
- python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作
python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...
- 聚合数据 iOS 项目开发实战:条码查询器
记录下,聚合数据 iOS 项目开发实战:条码查询器:视频地址:http://www.jikexueyuan.com/course/324.html 条码查询API:https://www.juhe.c ...
- shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机
shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机 备份mysql中的库或者表 mysqldump 常用参数详解: -u 用户名 -p 密码 -h ...
- shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中
shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...
- NoSQL 数据库案例实战 -- MongoDB数据备份、恢复
MySQL数据迁移到MongoDB数据库中 前言 一.数据备份 二.数据恢复 前言 本环境是基于 Centos 7.8 系统构建mongodb-enterprise-4.2.8学习环境具体构建,请参考 ...
- 怎样在C#中从数据库中读取数据(数据读取器)
实现在C#中通过语句,查询数据库中的数据 SqlConnection con = null; //创建SqlConnection 的对象 try //try里面放可能出现错误的代码 ...
随机推荐
- <c和指针>学习笔记3之函数和数组
1 函数声明 (1)原型 告诉编译器函数的参数数量和每个参数的类型以及返回值的类型.编译器通过检查原型之后,就可以检查这个函数得调用,从而来确保参数正确,返回值无误. 通用技巧,将原型写在一个头文件当 ...
- 天梯赛L2-006. 树的遍历L3-010. 是否完全二叉搜索树
L2-006. 树的遍历 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历 ...
- 洛谷P1549 棋盘问题(2)
P1549 棋盘问题(2) 题目描述 在N*N的棋盘上(1≤N≤10),填入1,2,…,N*N共N*N个数,使得任意两个相邻的数之和为素数. 例如:当N=2时,有: 其相邻数的和为素数的有: 1+2, ...
- 洛谷P1582 倒水
P1582 倒水 题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水量相同的瓶子,把 ...
- 洛谷P3327 [SDOI2015]约数个数和(莫比乌斯反演)
传送门 公式太长了……我就直接抄一下这位大佬好了……实在懒得打了 首先据说$d(ij)$有个性质$$d(ij)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]$$ 我们所求的答案为$ ...
- 30岁程序员的焦虑 Anxiety of 30-year-old Programmers
还有四个月,我就30周岁了.圈里都在传30岁程序员的焦虑,我也焦虑.身边的朋友,除了已经上岸的一部分,说不焦虑的,几乎找不到. 我们不妨认真地来聊一下这个话题:30岁,程序员,焦虑. 首先,什么是焦虑 ...
- Junit使用总结
对Junit的使用总结,后期会更新! 1.做自动单元测试用的,在方法前面加一个@Test(准备 一个测试用例),这是必须要加上的. 判定是成功还是失败. 最后是加一个断点,Assert.assertE ...
- Hexo - 记录一次Pages服务部署失败的原因
问题与分析 某天忽然发现,一直运行得好好的Pages服务部署失败了,GitHub Pages报错如下: Your site is having problems building: The tag c ...
- .NET 基础 一步步 一幕幕[Winform应用程序]
时隔半载,重回博客园,一切从头再来,今天只是开始,原谅我这一生放荡不羁爱自由. 进入今天得主题曲:Winform应用程序(简介) 1. winform应用程序是一种智能客户端技术,我们可以使 ...
- response.setContentType() 作用及参数用法
笔者感冒了,转载大神的 https://blog.csdn.net/luman1991/article/details/53423305 下载中设置文件名称 https://blog.csdn.net ...