一、概念
①、什么是ADO.NET
是一组用于和数据源进行交互地面向对象类库,可以处理数据源是多样的
②、ADO.NET与ADO的关系?
ADO使用的是OLE DB接口并基于微软的COM技术,而ADO.NET有自己的ADO.NET接口并基于微软的.NET体系架构
二、ADO.NET的核心组成
System.Data命名空间提供了不同的ADO.NET类,包含了两组重要的类:一组负责处理软件内部的实际数据(DataSet),一组负责与外部数据系统通信(Data Provider)
①System.Data → DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint,DataColumnMapping,DataTableMapping ②System.Data.Coummon → 各种数据访问类的基类和接口 ③System.Data.SqlClient → 对Sql Server进行操作的数据访问类 主要有: a) SqlConnection → 数据库连接器 b) SqlCommand → 数据库命名对象 c) SqlCommandBuilder → 生存SQL命令 d) SqlDataReader → 数据读取器 e) SqlDataAdapter → 数据适配器,填充DataSet f) SqlParameter → 为存储过程定义参数 g) SqlTransaction → 数据库事物
System.Data.SqlClient → 对Sql Server进行操作的数据访问类
一、Connection连接对象
Connection对象数据库连接对象,功能就是负责对数据源的连接
以SQLServer数据库为例
1.1连接字符串
基本语法:数据源(Data Source)+数据库名称(Initial Catalog)+用户名(User ID)+密码(Password)
1.1.1、SQL Server连接字符串
标准安全连接
Data Source=;Initial Catalog=myDataBase;Userid=myUsername;Password=myPassword: 或者
Server=myServerAddress;Database=myDataBase;Userid=myUsername;Password=myPassword;Trusted_Connection=False;
可信连接:
Data Source =myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;或者
Server=myServerAddress;Database=myDatabase;Trusted_Connection=True;
1.2、连接到数据库
Connection对象有两个重要的属性:
(1)ConnectionString:表示用于打开SQL Server数据库的字符串
(2)State:表示Connection的状态,有Closed和OPen两种状态
Connection对象有两个重要的方法:
(1)Open()方法:指示打开数据库;
(2)Close()方法:指示关闭数据库
//创建连接对象1 using (SqlConnection conn1 = new SqlConnection("连接字符串")) { conn1.Open(); }
二、Command对象
以SQLServer为例
数据库命令对象,Command对象主要执行包括添加、删除、修改、查询数据的操作命令。
1. SqlCommand常用的构造函数
Sqlcommand(): 初始化SqlCommand类的新的实例
SqlCommand(String): 使用查询的文本初始化SqlCommand类的新实例
2. 常用属性
CommandText:获取或设置要在数据源中执行的 Transact-SQL 语句、表名或存储过程。
CommandType:获取或设置一个值,该值指示解释 CommandText 属性的方式。Parameters:获取SqlParameterCollection
3. 常用方法
CreateParameter():创建SQLParameter对象的新实例。
ExcuteReader():将Command Text发送到Connection,并生成SqlDataReader。
ExecuteReader用于实现只进只读的高效查询
ExcuteReader:返回一个sqlDataReader对象,可以通过这个对象来检查查询结果,从结果中取一行之后移动到零一行,同时此方法也返回一个Bool值,表明下一行是否可用,返回True则可用,返回False则到达结果集末尾
使用ExecuteReader实现数据查询
//查询 private void btnQuery_Click(object sender, EventArgs e) { //创建连接对象,并使用using释放(关闭),连接用完后会被自动关闭 using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=sa;database=MyCar")) { //打开连接 conn.Open(); //将执行的sql String sql = "select Id,Title,Speed,Info from Car"; //创建命令对象,指定要执行sql语句与连接对象conn SqlCommand cmd = new SqlCommand(sql, conn); //执行查询返回结果集 SqlDataReader sdr = cmd.ExecuteReader(); //下移游标,读取一行,如果没有数据了则返回false while (sdr.Read()) { Console.WriteLine("编号:" + sdr["Id"] + ",车名:" + sdr["Title"] + ",速度:" + sdr["Speed"]); } } }
ExecuteNonQuery():执行一个SQL语句,返回受影响的行数,这个方法主要用于执行对数据库增加、更新、删除操作、注意查询的时候不是调用这个方法。用于完成insert、delete、update操作。
//新增 private void btnAdd_Click(object sender, EventArgs e) { //创建连接对象,并使用using释放(关闭),连接用完后会被自动关闭 using (SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=sa;database=MyCar")) { //打开连接 conn.Open(); //将执行的sql String sql = "INSERT INTO Car([Title] ,[Speed] ,[Info]) VALUES('奇瑞' ,190,'国产轿车')"; //创建命令对象,指定要执行sql语句与连接对象conn SqlCommand cmd = new SqlCommand(sql,conn); //执行,返回影响行数 int rows=cmd.ExecuteNonQuery(); if (rows > 0) MessageBox.Show("新增成功!"); } //using 相当如下代码,确保连接对象一定会关闭 //SqlConnection conn=null; //try //{ // conn=new SqlConnection("server=.;uid=sa;pwd=sa;database=MyCar"); //} //finally //{ // conn.Close(); //} }
三、SqlParameter
以SQLServer为例
表示SqlCommand的参数,或者其与DataSet列的映射,此类不能被继承
构造函数
SqlParameter(): 初始化SqlParameter类的新实例
SqlParameter(String,SqlDbType): 初始化提供的参数名称和数据类型初始化SqlParameter类的新实例
常用属性
Value: 获取或设置参数的值
TypeName:获取或设置表值参数的类型名称
常用方法
ToString():获取一个包含ParameterName的字符串
四、SqlDataReader
以SQLServer为例
提供一种从SQL Server 数据库中读取只进的行流方式。此类不能被继承
1. 常用方法
Read():让Sql DataReader 前进下一条记录。返回值为bool,如果存在多行,则为true;否则为false
GetInt32(Int 32):获取指定列的32位带符号整数形式的值。代码:public int GetInt32(int i)。
GetString(Int 32):获取指定列的字符串形式的值。代码:public string GetString(int i)。
IsDBNull(Int 32):获取一个值,该值指示列中是否包含不存在的或缺少的值。代码:public bool IsDBNull(int i)
三、System.Data 常用类
System.Data命名空间提供对表示ADO.NET结构的类的访问,通过ADO.NET,可以生成有效管理多个数据源的数据的组件。
1.常用类
DataRow:表示Data Table中的一行数据
DataSet:表示数据中内存中的缓存
DataTable;表示内存中数据的一个表
DataTable的构造函数
DataTable();在不使用参数的情况下初始化DataTable类的新实例
DataTable(string):使用指定的表名初始化DataTable类的新实例