微信号:quweiCSharp

介绍:专注于CSharp编程,.Net社区,.Net跨平台.

ADO.NET基础01(ADO.NET组成,数据库的方式,SqlCommand,SqlDataReader)

2016-03-08 13:06 小枫


1.什么是ADO.NET:

ADO.NET就是一组类库,这组类库可以让我们通过程序的方式访问数据库,就像System.IO下的类操作文件一样,

System.Data.这组类是用来操作数据库(不光是MSSql Server),它提供了统一的编程接口让操作其它数据库(Access、Oracle等)的方式和操作MSSql Server一致


2.ADO.NET组成

数据提供程序(常用类)

Connection:用来连接数据库

Command:用来执行SQL语句

DataReader:只读、只进的结果集,一条一条读取数据(StreamReader、XmlReader微软的类库中这些Reader的使用方式都差不多)

DataAdapter,一个封装了上面3个对象的对象

数据集(DataSet),在内存中的临时数据库,断开式数据操作


3.ADO.NET中的其他常见类

ConnectionStringBuilder       //自动生成连接字符串

Parameter                            //带参数的SQL语句

Transaction                         //在ADO.NET中使用事务

与DataSet相关的类:

DataView                           //视图类,DataTable中的数据以不同的视角查看

DataRowView                   //DataView中的行。

DataTable                        //DataSet中的数据表

DataRow                         /DataTable中的行

DataColumn                   //DataTable中的列

DataRealation               //DataTable与DataTable的关系

Constraint                    //DataTable中建立的约束


4.各类在开发中的职能

Ado.net访问数据库的方式

方式一:

1.连接数据用Connection

2.执行SQL语句Command

3.执行完毕之后将结果一条一条返回。DataReader


方式二:

使用DataAdapter+DataSet,这种方法本质还是通过Connection、Command、DataReader将数据全部取出来然后放到了DataSet中

访问SqlServer的类

读取SqlServer数据库使用SqlConnection对象

获取连接字符串

使用SqlConnectionStringBuilder帮助获取连接字符串

VS视图-服务器资源管理器-数据库连接上点右键-添加连接     在新添的数据库上点右键 属性  里有连接字符串

打开连接(多次打开问题:ConnectionState枚举)

关闭连接               //相当于设置了路障

释放资源              //相当于把路拆了

调用Connection.Dispose()【继承自Component类的方法】方法时,内部调用了Close()

connection不能重复打开

可以放到using中使用

将Open()方法放到try…catch…中使用,防止发生异常时报错

可以在连接字符串中设置超时时间

可以通过ConnectionState来判断连接的状态


5.执行命令SqlCommand

表示向服务器提交的命令(SQL语句等)

属性CommandText为要执行的SQL语句,也可以是存储过程名

属性CommandType,指定命令的类型,是sql语句还是存储过程

创建SqlCommand对象:通过new关键字创建

常用的三个方法:

1.ExecuteNonQuery() 执行对数据库的增删改,返回受影响的行数,适合:insert、delete、    update(对于其他语句返回-1)

2.ExecuteScalar() 执行查询,返回首行首列

3.ExecuteReader() 执行查询,返回DataReader对象

执行步骤:1)打开连接;2)执行操作;3)关闭连接


6.数据读取SqlDataReader

以只进、只读的方式读取结果集中的数据

注意:使用时必须保证连接是打开的

使用完成后需要进行关闭

说明:每个读取对象都单独占用一个连接

方法Read()完成一行的读取,如果读取到数据则返回true,否则返回false

属性HasRows判断是否结果集中有行

通过索引器reader[index]读取结果集中某列的数据,注意索引从0开始

如果访问的值为null则会报错,所以需要使用reader.IsDbNull(index)进行非空验证

如果执行了多个查询语句则会返回多个结果集,使用NextResult()方法。通过do-while循环遍历

将数据读取到List<>中,可以完成向DataGridView的绑定


欢迎关注趣味CSharp,完整笔记与您分享~~~~~~~~

 
趣味CSharp 更多文章 CSharp基础起步第一期--代码规范 CSharp基础起步第二期--虚方法,抽象方法 CSharp基础起步第四期--静态类 CSharp基础起步第六期--常用类库StringBuilder,List<T>泛型集合 CSharp基础起步第七期---文件流,文件操作
猜您喜欢 微软在多个国家整合Skype和Outlook 高屋建瓴地规划自己的运维体系 杂谈 | 走自己的路,但请快乐 为什么程序员得到的报酬与他们的生产力不成正比 Python基础教程16:元组