ADO.Net是.Net框架中为数据库的访问而封装的一个库。通过这个库我们可以简单便捷的访问数据库,并对数据库进行一些增删改查的操作,目前ADO.Net支持四种主流的数据库,分别是SQL、OLE DB、ODBC、Oracle,因为它的存在使得程序员不再需要了解数据库的一些API就可以对数据库进行存取。而每一种数据库,都被封装为ADO的一个对象,并且将大部分的功能都封装在相应的对象中,可以这样理解,如果把这四种数据库比作中行、工行、建行、农行,他们的功能大致相同,都是对“数据”这种货币的存取。但是由于体制的不同,所以流程也不一样,但现在ADO如同支付宝,给我们提供了一个更加直观便捷的方式去对货币进行存取的操作,而不需要考虑你所使用的是哪一种银行卡。下边以支付宝的使用来讲ADO的使用过程。

情景:小明带着女朋友逛街,购物时选择使用支付宝支付。

1)选择支付方式—通过Connection对象建立与特定数据库的连接

2)扫一扫—通过Command对象对数据源执行命令

3)余额是否够支付—通过DataReader对象从数据源中读取只进且只读的数据流

4)付款后支付宝消费通知—通过DataAdpter对象对DataSet数据集进行更新

第一步选择支付方式,很好理解,就是告诉支付宝你要选择用那种银行卡进行支付,而在程序中就是创建Connection对象,访问不同的数据源(即不同种类的数据库)应该选择相应的Connection对象,比如访问SQL,通过SqlConnection对象,访问OLE DB则选择OleDbConnection对象,访问ODBC,选择OdbcConnection对象,访问Oracle,选择OracleConnection对象。这里我们以SQL为数据源。

using System.Data.SqlClient;//添加引用
//先绑定银行卡 
String ConnectionString = "Data Source=服务器名;Initial Catalog=数据库名;User id=用户名;Pwd=密码";
SqlConnection SQL=new SqlConnection(ConnectionString); 、
//消费时,可以通过Open()方法来选择以这张SQL的银行卡来结算,消费结束后退出银行卡
SQL.Open();
Messagebox.Show("疯狂消费中"); 
SQL.Close();

一定要记得每次Open()后要Close()连接,你想啊, 你吃着火锅唱着歌,回到家一看,银行卡被刷!爆!了!多可怕。

准备付款,选择了扫一扫店家的二维码想店家转账。而在ADO中,当我们建立了连接以后,如果我们要对数据进行操作,就要告诉程序,是读取数据还是存入数据,在这里我们使用Command对象。

疯狂消费时....

String commandtext = “买买买”;//当然这里是符合规范的具体的SQL命令,而不是买买买

SqlCommand command = new SqlCommand(commandtext,SQL);//指定SQL命令和连接(潜台词:这张卡,随便刷!)

MessageBox.Show("准备付账");

小明和他的女朋友确定好了要买的东西,准备支付,但支付宝会在支付前提示当前银行卡余额是否足够,在ADO中,我们建立了连接通道,确定了操作,现在要获取数据了,我们使用Command对象的ExecutedReader() 方法 获取 数据,然后用DataReader对象来承载,最后,可以使用DataReader对象的Read()方法来表示是否读取到下一行数据。

付账时...

SqlDataReader dr= new SqlDataReader=command.ExecutedReader();

while(dr.Read())

{

MessageBox.Show("尊敬的客户,您还可以支撑此次消费");

}

最后一步的DataSet对象下次再讲。

ps:好吧,其实这次的随笔写的好差劲,比喻很不恰当,是我对ADO的理解还不够深刻,以后要重新写一遍。大家就当个小故事看吧。

ADO.NET学习笔记(1)的更多相关文章

  1. ADO.NET 学习笔记 入门教程

    本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=57&page=1&extra=#pid63 这是本人在 ...

  2. C#-ado.net学习笔记-会有更新

    ado.net 通用类对象.在本地内存暂存数据 托管类对象.让本地通用类对象连接数据库,让本地通用类对象和数据库同步 连接数据库 new connection(connectstring) comma ...

  3. Sql Ado.net 学习笔记之连接字符串

    https://www.cnblogs.com/heng95/p/5902019.html 连接字符串 SQL Client .net数据提供程序在连接到数据库时极其灵活,它提供了多种用以生成连接字符 ...

  4. ADO.NET Entity Framework学习笔记(3)ObjectContext

    ADO.NET Entity Framework学习笔记(3)ObjectContext对象[转]   说明 ObjectContext提供了管理数据的功能 Context操作数据 AddObject ...

  5. ADO学习笔记之注入漏洞与参数化查询

    ADO学习笔记之注入漏洞与参数化查询 作为新手,在学习ADO程序时,使用 sql 语言查询数据时,很容易写类似如下代码: using (SqlConnection con = new SqlConne ...

  6. Entity Framework学习笔记——错误汇总

    之前的小项目做完了,到了总结经验和更新学习笔记的时间了.开始正题之前先啰嗦一下,对之前的学习目标进行一个调整:“根据代码生成表”与“生成数据库脚本和变更脚本”合并为“Code First模式日常使用篇 ...

  7. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  8. CUBRID学习笔记 3 net连接数据库并使用cubrid教程示例

    接上文 数据库安装好后,也可以测试语句了. 下面我们用c#写一个控制台程序,连接数据库,并读取数据. 一 下载驱动  net版的下 CUBRID ADO.NET Data Provider 9.3.0 ...

  9. Entity Framework学习笔记

    原文地址:http://www.cnblogs.com/frankofgdc/p/3600090.html Entity Framework学习笔记——错误汇总   之前的小项目做完了,到了总结经验和 ...

随机推荐

  1. Jmeter+badboy压力测试总结

    流程:badboy导出Jmeter压测脚本 -> Jmeter进行压力测试 软件下载地址: badboy:http://www.badboy.com.au/ Jmeter:http://jmet ...

  2. C#控件DataGridView笔记

    1.列排序问题,点击列标题行时列会自动排序导致表格混乱.解决办法: 2.改变行高 改变列头行高 ColumnHeadersHeaderSize属性设为 EnableResizing ColumnHea ...

  3. 关于MVC工厂模式的增删改查sql存储过程

    这里MVC中用到了反射,工厂,泛型,接口 在搭建框架的时候,除了MVC的三层以外,还有泛型的接口层和工厂层 下面是dal层调用sql存储过程,增删改查,dal层继承了接口层,实现了接口层里面的方法 1 ...

  4. Hbase--知识点总结3

    Hbase知识点总结:  hbase表中为什么列族的数量不能太多? 因为当一个列族数据溢写的时候,其他列族也会发生数据溢写,但是其他列族中数据的数量还没有达到溢写的阈值,就会导致产生的小文件数量增多. ...

  5. 基于springboot的SSM框架实现返回easyui-tree所需要数据

    1.easyui-tree easui-tree目所需要的数据结构类型如下: [ { "children": [ { "children": [], " ...

  6. d3.js d3.transform 方法移除的解决方案

    rt d3.transform在新版本中移除 需要自行写出该功能 function getTranslation(transform) { // Create a dummy g for calcul ...

  7. coderwarrior 查看程序大小 Code Size

    https://mcuoneclipse.com/2012/09/24/code-size-information-with-gcc-for-armkinetis/

  8. Node.js的内存问题

    v8堆内存限制默认是1GB,所以可能成为瓶颈. 但是Buffer的内存不受限制,而且可以开多个Nodejs实例然后通过代理进行负载均衡,不过不知道这样效果怎么样呢? 但是基本上应该内存的话不会成为单实 ...

  9. 再次认识void

    重新认识void 在初学c/c++时感觉void是一个很不起眼的关键字.因为在c++中我使用的还是比较少的.但是到了Linux中,不论是在内核源码中还是在程序编写的过程中有关void与*的组合随处可见 ...

  10. pythone函数基础(13)发送网络请求

    需要导入urllib模块,request模块发送网络请求有两种方法 第一种方法# from urllib.request import urlopen# from urllib.parse impor ...