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

  我的环境是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. POJ - 2955 Brackets括号匹配(区间dp)

    Brackets We give the following inductive definition of a “regular brackets” sequence: the empty sequ ...

  2. 牛客多校3 A-PACM Team(状压降维+路径背包)

    PACM Team 链接:https://www.nowcoder.com/acm/contest/141/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144 ...

  3. SqlServer2012——多表连接查询

    1.基本连接 select A.姓名,A.性别,B.班级名,B.家庭住址 From 学生信息 A,班级信息 B where A.所属班级=B.班级编号 --把A表与B表连接起来 2.内连接 --内连接 ...

  4. win form treeview添加节点

    //实例代码: /// <summary> /// 添加节点事件 /// </summary> /// <param name="tnodes"> ...

  5. 反射学习:(System.Reflection)

    反射为了动态(运行时动态) 原理:读取metadata(?)   Assembly assembly = Assembly.Load("TestReflections");//反射 ...

  6. 如何使用jmeter连接数据库并提取数据库中的值作为参数,与响应信息中提取的值进行比较

    思路: 连接数据库 获取数据库返回的数据 获取接口返回的数据 两者返回数据进行对比验证 连接数据库 1.jmeter要链接mysql数据库,首先得下载mysql jdbc驱动包(注:驱动包的版本一定要 ...

  7. Picture poj1177

    Picture Time Limit: 2000MS   Memory Limit: 10000K Total Submissions: 12265   Accepted: 6484 Descript ...

  8. DOM事件-冒泡、捕获、传播、委托

    事件捕获 以点击事件为例事,同类型事件会由根元素开始触发,向内传播,一直到目标元素.从外到内依次触发:根—目标的祖先素—目标的父元素—目标元素. 事件冒泡 根事件捕获截然相反.发生点击事件时,事件会从 ...

  9. append、replace、replaceAll、indexof、lastIndexOf、substring的用法

    1.append StringBuffer buf = new StringBuffer("Hard "): String  aString  =  "Waxworks& ...

  10. Glassfish 设置时区

    对于Glassfish domain 或者instance下,某个日志的时区不对,前提是系统时区争取. 可以尝试通过如下命令查看jvm 时区设置 asadmin list-jvm-options 如果 ...