什么是ADO.NET:

ADO.NET就是一组类库,这组类库可以让我们通过程序的方式访问数据库,就像System.IO下的类操作文件一样, System.Data.这组类是用来操作数据库(不光是MSSql Server),它提供了统一的编程接口让操作其它数据库(Access、Oracle等)的方式和操作MSSql Server一致

ADO.NET组成

数据提供程序(常用类)
Connection:用来连接数据库
Command:用来执行SQL语句
DataReader:只读、只进的结果集,一条一条读取数据(StreamReader、XmlReader微软的类库中这些Reader的使用方式都差不多)
DataAdapter,一个封装了上面3个对象的对象
数据集(DataSet)
在内存中的临时数据库
断开式数据操作

ADO.NET中的其他常见类

ConnectionStringBuilder//自动生成连接字符串
Parameter//带参数的SQL语句
Transaction//在ADO.NET中使用事务
与DataSet相关的类:
DataView//视图类,DataTable中的数据以不同的视角查看
DataRowView//DataView中的行。
DataTable //DataSet中的数据表
DataRow//DataTable中的行
DataColumn//DataTable中的列
DataRealation//DataTable与DataTable的关系
Constraint//DataTable中建立的约束

各类在开发中的职能

Ado.net访问数据库的方式

方式一:
1.连接数据用Connection
2.执行SQL语句Command
3.执行完毕之后将结果一条一条返回。DataReader
方式二:
使用DataAdapter+DataSet,这种方法本质还是通过Connection、Command、DataReader将数据全部取出来然后放到了DataSet中

访问SqlServer的类

读取Sql Server数据库使用SqlConnection对象
获取连接字符串
使用SqlConnectionStringBuilder帮助获取连接字符串
VS视图-服务器资源管理器-数据库连接上点右键-添加连接     在新添的数据库上点右键 属性  里有连接字符串

打开连接(多次打开问题:ConnectionState枚举)
关闭连接 //相当于设置了路障
释放资源 //相当于把路拆了
调用Connection.Dispose()【继承自Component类的方法】方法时,内部调用了Close()
connection不能重复打开
可以放到using中使用
将Open()方法放到try…catch…中使用,防止发生异常时报错
可以在连接字符串中设置超时时间
可以通过ConnectionState来判断连接的状态

执行命令SqlCommand

表示向服务器提交的命令(SQL语句等)
属性CommandText为要执行的SQL语句,也可以是存储过程名
属性CommandType,指定命令的类型,是sql语句还是存储过程
创建SqlCommand对象:通过new关键字创建
常用的三个方法:
ExecuteNonQuery() 执行对数据库的增删改,返回受影响的行数,适合:insert、delete、update(对于其他语句返回-1)
ExecuteScalar()执行查询,返回首行首列
ExecuteReader() 执行查询,返回DataReader对象
执行步骤:1)打开连接;2)执行操作;3)关闭连接

数据读取SqlDataReader

以只进、只读的方式读取结果集中的数据
注意:使用时必须保证连接是打开的
使用完成后需要进行关闭
说明:每个读取对象都单独占用一个连接
方法Read()完成一行的读取,如果读取到数据则返回true,否则返回false
属性HasRows判断是否结果集中有行
通过索引器reader[index]读取结果集中某列的数据,注意索引从0开始

如果访问的值为null则会报错,所以需要使用reader.IsDbNull(index)进行非空验证
如果执行了多个查询语句则会返回多个结果集,使用NextResult()方法。通过do-while循环遍历
将数据读取到List<>中,可以完成向DataGridView的绑定

最新文章

  1. Java 的静态代理 动态代理(JDK和cglib)
  2. [转]ASP.NET MVC 3 Razor + jqGrid 示例
  3. 我所理解的cocos2dx自适配屏幕大小方案
  4. Android的两种事件处理机制
  5. HDU1215(筛选法)
  6. 平衡二叉树(AVL)java实现
  7. ASP.NET MVC 文件异步上传问题处理
  8. DelphiXE8怎么使用调试模式(朱建强)
  9. SecureCRT学习之道:SecureCRT常用快捷键设置与字体设置方法
  10. android app安全问题设置
  11. POJ 3347 Kadj Squares (线段覆盖)
  12. Go使用Makefile构建
  13. A simple problem(湘大邀请赛)
  14. 深入JAVA注解(Annotation):自定义注解 (转)
  15. Couple number
  16. 这可能是最好的RxJava 2.x 入门教程(一)
  17. MySQL安装脚本最佳实践
  18. HTTP基本原理(转)
  19. kotlin 代码习惯1
  20. 如何通过活字格实现Excel 汇总

热门文章

  1. Mac上安装brew
  2. 【转】常用插件和mvn test命令
  3. [ERROR] Failed to open log
  4. nginx学习之一
  5. PIGCMS提示“你的程序为盗版,非法授权,请联系QQ7530782或者8441010”的修复方法
  6. ios7.0结合storyborad实现页面跳转的总结
  7. 将eclipse的应用程序打包成.exe
  8. Linux &quot;ls -l&quot;文件列表权限详解
  9. [转载]点评阿里云、盛大云等国内IaaS产业
  10. 完整实例(C# Socket)