ADO.NET 基础学习笔记1
1. ODBC、OLEDB、ADO、ADO.NET之间的关系
ODBC: 开放数据库互连(ODBC)是MICROSOFT提出的数据库访问接口标准。ODBC(Open DatabaseConnectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问数据库管理系统(DBMS)。
OLEDB: OLEDB(ObjectLinking and Embedding,Database,又称为OLE DB或OLE-DB),一个基于COM的数据存储对象,能提供对所有类型的数据的操作。
ADO: ADO (ActiveXDataObjects)是一个用于访问数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。
ADO.NET: ADO虽然是比较成功的产品,但ADO本身的架构仍然有缺陷,尤其是在开发网络应用程序时,Recordset无法脱机,严重影响了网络应用的开发。ADO.NET引入了脱机型数据模型的概念,成功解决了ADO所不能及的问题。
关系:ODBC位于数据访问的最底层,OLEDB次之,ADO位于最上层。我们的应用程序可以通过三种方式访问数据库,分别是应用程序——ODBC——数据库,应用程序——OLEDB——ODBC——数据库,应用程序——ADO——OLEDB——ODBC——数据库。
2.ADO.NET类集合主要由五大核心组件类组成:Connection(数据库连接)、Command(数据库的命令)、DataReader(数据库的读取器)、DataSet(数据集)和 DataAdaper(数据库的适配器)。

3. 数据库连接
使用SqlConnection对象连接SQL Server:ConnectionString = "server=localhost;database=TestData;;User Id=danfoss;Password=danfoss;" (如果使用SQL EXPRESS, 改为server=localhost/sqlexpress)
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open(); operate database here...... conn.Close();
}
使用OleDbConneetion连接支持OLE DB的数据库,如Access: ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Sourse = Access数据库;UserId = 用户名;Password = 密码;"
确保资源释放:1. 访问结束时,调用close()方法; 2.利用using 语句
配置连接字符串,并使用ConfigurationManager访问:
<configuration>
<connectionStrings>
<add name="conn1" connectionString="server=192.168.0.23;database=TestData;;User Id=danfoss;Password=danfoss;"/>
</connectionStrings>
</configuration>
using System.Configuration; String connsql = ConfigurationManager.ConnectionStrings["conn1"].ToString();
4. 数据库执行命令
<Provider>Command类提供了以下可执行的命令:
- ExcuteNonQuery() ----- 执行命令,返回受影响的记录个数,可用于update, delete, insert into 语句;
- ExcuteReader() ------ 返回 IDataReader 读取器;
- ExcuteScalar() ------ 返回结果集中的第一行第一列的值;
- ExcuteXMLReader() ------ 仅用于SqlCommand,返回一个XmlReader对象,可以遍历从数据库中返回XML片段;
以ExcuteReader()读取Sql Server为例,其他类似:
String connsql = @"server=192.168.0.23;database=TestData;;User Id=danfoss;Password=danfoss;";
try
{
using (SqlConnection conn = new SqlConnection(connsql))
{
conn.Open();
string sqlStr = "select * from StudentInfo";
SqlCommand comm = conn.CreateCommand();
comm.CommandText = sqlStr;
comm.CommandType = System.Data.CommandType.Text;
SqlDataReader sr = comm.ExecuteReader();
while (sr.Read())
{
Console.WriteLine("ID:{0},Name:{1},Phone:{2},Time:{3}", sr.GetInt64(), sr.GetString(), sr[], sr[]);
}
sr.Close();
conn.Close();
}
}
catch (Exception err)
{
Console.WriteLine(err.Message);
}
finally
{ }
IDataReader是一个只能向前的读取器,即只能沿着一个方向遍历数据,数据库连接会一直处于打开状态,直到显式关闭。若在ExecuteReader()中传入参数CommandBehavior.CloseConnection,就可以在关闭读取器时强制关闭数据库连接。
SqlDataReader 有个索引器,可以根据字符串(即数据库表中的字段名),数字来获取数据,其中直接以数字索引访问速度更快。但以索引器访问返回的是Object ,需要类型转换,因此还有一种更快的访问方式,以Get开头的一组类型安全的方法,例如GetInt32(), GetFloat(), GetString()。
ADO.NET 基础学习笔记1的更多相关文章
- 【C#编程基础学习笔记】4---Convert类型转换
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...
- 【C#编程基础学习笔记】6---变量的命名
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- Mysql数据库基础学习笔记
Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
- C#RabbitMQ基础学习笔记
RabbitMQ基础学习笔记(C#代码示例) 一.定义: MQ是MessageQueue,消息队列的简称(是流行的开源消息队列系统,利用erlang语言开发).MQ是一种应用程序对应用程序的通信方法. ...
- handlebars.js基础学习笔记
最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ...
随机推荐
- Flask入门之Bootstrap介绍使用和Flask-Nav快速导航栏
一.Bootstrap Bootstrap,来自 Twitter,是目前最受欢迎的前端框架. Python中,同样可以使用Bootstrap. 1. 导入Bootstrap库 from flask_b ...
- iframe跨域动态设置主窗口宽高
Q:在A项目的a页面嵌入一个iframe,src是B项目的b页面,怎样让a页面的高度跟b页面的高度一样? A:解决跨域方案:增加一个A项目的c页面. 操作步骤: 一,a页面的iframe设置: 获取到 ...
- 一种轻量级的微信小程序日志监控的方法
今天一个活动要写个H5,明天一个功能要用小程序,天天都在写bug.用户反馈小程序用起来有问题还特么还不知道到底出了啥bug,反馈多了,老板要扣工资了!看来挖了太多坑不填也不行,程序异常还是要主动追踪, ...
- 对JDK的深入理解
今天对Java的jdk有了更加深入的理解: Java的jdk其实一共包含三部分内容: 1.工具包 2.类库 3.JRE jdk的全名:Java develop kit (java开发工具) jdk包含 ...
- 数据分析之---Python可视化工具
1. 数据分析基本流程 作为非专业的数据分析人员,在平时的工作中也会遇到一些任务:需要对大量进行分析,然后得出结果,解决问题. 所以了解基本的数据分析流程,数据分析手段对于提高工作效率还是非常有帮助的 ...
- 使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控
由于最近在做监控方面的工作,因此也读了不少相关的经验分享.其中有这样一篇文章总结了一些基于Spring Boot的监控方案,因此翻译了一下,希望可以对大家有所帮助. 原文:Near real-time ...
- Python爬虫-尝试使用人工和OCR处理验证码模拟登入
刚开始在网上看别人一直在说知乎登入首页有有倒立的汉字验证码,我打开自己的知乎登入页面,发现只有账号和密码,他们说的倒立的验证码去哪了,后面仔细一想我之前登入过知乎,应该在本地存在cookies,然后我 ...
- js生成带logo的二维码
作为一名java程序员,一直以来都是使用服务端生成二维码,最近接触前端的设计,感觉二维码这块如果放到前端去生成,一方面可以减轻服务端的压力,访问带宽,另一方面,前端页面控制比较顺畅 闲话少叙,说下我的 ...
- .Net Remoting 调用远程对象
根据需求,我们的系统必须以C/S方式构建,而且是三层架构,这样一来,就出现了服务器端和客户端通信的问题. 为了解决双方的通信问题,还要考虑效率.性能等方面,经过分析.试验,我们根据效率.移植.开发难易 ...
- keras实现简单CNN人脸关键点检测
用keras实现人脸关键点检测 改良版:http://www.cnblogs.com/ansang/p/8583122.html 第一步:准备好需要的库 tensorflow 1.4.0 h5py ...