菜鸟的数据库实战-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里面放可能出现错误的代码 ...
随机推荐
- Sharepoint2013搜索学习笔记之修改搜索拓扑(三)
搜索服务新建好之后可以从管理中心,应用程序管理页面,进入搜索服务的管理页面,进入管理页面之后可以看到当前sharepoint场的搜索拓扑结构. 如果sharepoint场内有多台服务器,需要将搜索组件 ...
- 查看 打包秘钥的 SHA1
keytool -v -list -keystore C:\Users\XXX\.android\debug.keystore 输入密钥库口令: android android
- HTML5学习笔记(一)相关概率
HTML5的设计目的是为了在移动设备上支持多媒体. 声明:<!DOCTYPE html> 注意:对于中文网页需要使用 <meta charset="utf-8"& ...
- Unity中场景异步加载
引入命名空间 using UnityEngine.UI; using UnityEngine.SceneManagement; using System.Collections; using Syst ...
- 教妹学 Java:晦涩难懂的泛型
00.故事的起源 “二哥,要不我上大学的时候也学习编程吧?”有一天,三妹突发奇想地问我. “你确定要做一名程序媛吗?” “我觉得女生做程序员,有着天大的优势,尤其是我这种长相甜美的.”三妹开始认真了起 ...
- linux下安装QQ等EXE文件
安装好linux系统后,发现linux很多自带的软件用起来很不习惯,于是去网上下载QQ等在Windows下经常使用的exe文件. 发现这些文件无法安装,在网上找了一些解决办法,须下载wine,然后才可 ...
- PAT甲级真题及训练集
正好这个"水水"的C4来了 先把甲级刷完吧.(开玩笑-2017.3.26) 这是一套"伪题解". wacao 刚才登出账号测试一下代码链接,原来是看不到..有空 ...
- unity 代码添加AnimationEvent
经过测试只要Animator跟继承monoBehaviour的类A在同一个节点上,就可以注册类A中的public 方法,含0或1个参数(int,float,object,string),注意:只能是0 ...
- Unity 5.6 beta版本新特性
http://manew.com/thread-98549-1-1.html 最新发布的beta版改进了编辑器和2D功能,图形性能更佳,加入新的视频播放器,并添加了对Facebook Gameroom ...
- AcEdCommandStack 输出所有命令
; AcEdCommandIterator* iter = nullptr; for (iter = acedRegCmds->iterator(); !iter->done(); ite ...