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

  我的环境是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的更多相关文章

  1. C#与数据库访问技术总结(十一)之数据阅读器(DataReader)1

    数据阅读器 当执行返回结果集的命令时,需要一个方法从结果集中提取数据. 处理结果集的方法有两个: 第一,使用数据阅读器(DataReader): 第二,同时使用数据适配器(Data Adapter)和 ...

  2. C#与数据库访问技术总结(十二)数据阅读器(DataReader)2

    遍历数据阅读器中的记录 当ExecuteReader方法返回DataReader对象时,当前光标的位置在第一条记录的前面. 必须调用阅读器的Read方法把光标移动到第一条记录,然后,第一条记录将变成当 ...

  3. 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释

    在自学杨中科老师的视频教学时,拓展编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时 会产生Additional information: 阅读器关闭时尝试调用 ...

  4. python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作

    python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...

  5. 聚合数据 iOS 项目开发实战:条码查询器

    记录下,聚合数据 iOS 项目开发实战:条码查询器:视频地址:http://www.jikexueyuan.com/course/324.html 条码查询API:https://www.juhe.c ...

  6. shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机

    shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机 备份mysql中的库或者表 mysqldump 常用参数详解: -u 用户名 -p 密码 -h ...

  7. shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中

    shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...

  8. NoSQL 数据库案例实战 -- MongoDB数据备份、恢复

    MySQL数据迁移到MongoDB数据库中 前言 一.数据备份 二.数据恢复 前言 本环境是基于 Centos 7.8 系统构建mongodb-enterprise-4.2.8学习环境具体构建,请参考 ...

  9. 怎样在C#中从数据库中读取数据(数据读取器)

    实现在C#中通过语句,查询数据库中的数据 SqlConnection con = null; //创建SqlConnection 的对象 try    //try里面放可能出现错误的代码        ...

随机推荐

  1. setInterval(callbackfunc,time)中callbackfunc传参数问题

    var si=setInterval(callbackfunc,time)中callbackfunc传参数问题(循环执行) var st=setTimeout(callbackfunc,time);定 ...

  2. Go中函数作为值、类型传递。

    在Go中函数也是一种变量,我们可以通过type来定义它,它的类型就是所有拥有相同的参数,相同的返回值的一种类型 type typeName func(input1 inputType1 , input ...

  3. CI框架中,判断post,ajax,get请求的方法

    CI框架当中并没有提供,类似tp框架中IS_POST,IS_AJAX,IS_GET的方法. 所有就得我们自己造轮子了.下面就介绍一下,如何定义这些判断请求的方法.其实很简单的. 首先打开constan ...

  4. Linux C/C++时间字符串与time_t之间的转换方法(转)

    1.指定time_t类型的时间,格式化为YYYYMMDDHH24MISS型的字符串 void FormatTime(time_t time1, char *szTime) {        struc ...

  5. SQL 截取时间

    -- 获取系统时间 print getdate() -- 获取3天前的时间 print dateadd(day, -3 , getdate()) -- 获取3天后的时间 print dateadd(d ...

  6. JavaScript-导论

    说明:此类博客来自以下链接,对原内容做了标注重点知识,此处仅供自己学习参考! 来源:https://wangdoc.com/javascript/basic/introduction.html 1.什 ...

  7. duliu——思维+线段树

    题目 [题目描述]小 `D` 喜欢出毒瘤题毒人.当然,他的毒瘤更多体现在若干个难题组合在同一场比赛时.小 `D` 脑中有 $n$ 个毒瘤题 idea,第 $i$ 个的毒值为$d_i$.当第 $i$ 个 ...

  8. springCloud学习总览

      写完最后一篇特意去看了看第一篇是什么时候写的---2018/11/19,到现在三个月多一点,总的来说这三个月通过<Spring 微服务实战>这本书,算是对微服务进行了一次扫盲学习.   ...

  9. json 打印

    JsonObject jsonObj = new JSONObject(); jsonObj.put("success",true); jsonObj.put("msg& ...

  10. JVM虚拟机的大概了解(新人面试必看!)

    一. 引言,环境安装测试中的代码解析       1. HotSpot(TM) 64-bit Server VM(build 25.181-b13,mixed mode),这是多种     HotSo ...