Ado.Net

一、Ado.Net
一种数据访问技术,让应用程序可以连接数据库,并以各种方式来操作其中的数据。一个COM组件库,.Net中的数据,优先选择的数据访问接口。
组成:DataSet---非连接的核心组件。独立于任何数据源的数据访问,多种不同的数据源
    DataProvider(数据提供程序):用于连接数据库、执行命令、检索结果。
Connection 提供与数据源的连接  SqlConnection
Command 执行数据库命令的对象 SqlCommand
DataReader 从数据源中提供快速的,只读的数据流 SqlDataReader
DataAdapter 提供DataSet对象与数据源的桥梁。Fill Update
Ado.Net访问数据的步骤:
连接数据库,打开连接,创建执行命令对象(创建命令)执行命令 关闭连接
SqlConnection类 继承于 DbConnection 抽象基类,不能被实例化。提供与SqlServer连接。
常用属性:ConnectionString State DataBase DataSource
State:Closed 已关闭、Open打开、Connection 正在连接、Exxcuting 正在执行命令
   Fetching 正在检索、Broken 连接中断
1.创建连接
 SqlConnection conn = new SqlConnection();
//打开数据库的钥匙
conn.ConnectionString = "server=.;databse=PhoneBookDb;uid=rl;pwd=12345"
2.打开连接
 conn.Open();
3.创建执行命令对象
conn.CreateCommand();
4.执行命令
5.关闭连接
conn.Close();//关闭连接
连接字符串:
Sql server 身份验证
Data Source 数据源  Initial Catalog 数据库名 User Id 账号 PassWord 密码
windows身份验证
Data Source 数据源  Initial Catalog 数据库名 Integrated Security=True/SSPI或者
Trusted_Connection=True
Oracle
Data Source 数据源 User Id 账号 PassWord 密码
MYSQL
Data Source 数据源  Initial Catalog 数据库名 User Id 账号 PassWord 密码
Access
Provider=Microsoft.Jet.OLEDB.4.0 Data Source 文件绝对路径 User Id PassWord 
可以使用SqlConnectionStringBuild类来生成连接字符串
为了程序的灵活性,一般配置到配置文件中进行存储App.config
配置到connectionString节点中
using System.Configuration
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString
一般使用connectionString

连接池:
非常耗时耗力。经历几个阶段:建立物理通道,与服务器初次握手,分析连接字符串,分身验证
容器:存放一定数量的数据库服务器的物理连接。
需要:容器里取出一条空闲的连接,而不是创建一条新的连接
作用:减少了连接数据库的开销,从而提高应用程序的性能。
分类:同一时刻同一应用程序域可以有多个不同类型的连接池
什么标识来区分:进程、应用程序域、连接字符串、windows标识共同组成
对同一程序域来说,由连接字符串来区分
如何分配:根据连接请求的类型,找到与它相匹配的连接池,尽力的分配一条空闲的连接。
已达到了最大连接数,等待,直到有空闲的连接。
移除无效的连接,不能正确连接到数据库服务器的连接。连接池存储的数据库服务器连接数量有限。无效连接应当移除,不然浪费连接池空间,连接池管理器自己会处理。
回收连接:释放使用完的连接,应当即时关闭或释放,conn对象的Close Dispose连接回连接池
连接池的使用:最大连接数:Max Pool Size 100  最小连接数:Min Pool Size 0
                         Pooling 是否启用连接池 true   pooling = falise是禁止启用连接池
    启用连接池比不启用连接池效率高很多
只要连接字符串一样,就会共用一个连接池
SqlCommand---适用于数据量小的
Connection:SqlCommand对象使用的SqlConnection
CommandText:获取或设置要执行的T-SQL语句或者存储过程
CommandType:CommandType.Text--执行的是一个Sql语句
                  CommandType.StoredProcedure--执行存储过程
Parameters:SqlCommand对象的命令参数集合、空集合
Transacction:获取或设置要在其中执行的事务
SqlCommand cmd = new Command(sql,conn)---conn是连接对象
执行命令:
cmd.ExecuteNonQuery()--执行T-SQL语句,并返回受影响的行数--命令类型 增删改 --DML
拼接式sql,容易被SQL注入--conn必须是Open
cmd.ExecuteScalar()--conn必须是Open
执行查询语句或存储过程,返回查询结果中的第一列第一行,只返回一个值  查询--DQL
也可以使用count(1)查询返回的数量;查询标识列:select @@identity
cmd.ExecuteReader()--返回一个对象SqlDataReader--游标-指针,只进不出,数据流、只读
SqlParameter--SqlCommand对象的参数
DbType--参数的SqlDbType(数据类型没数据库的类型而言)
Direction--参数的类型L输入,输出,输入输出,返回值参数
ParameterName--参数的名称
Size 最大大小,字节为单位
value 参数的值
SqlValue--作为SQL类型的参数的值
防止注入和转义
注入和转义怎么解决
使用Parameter参数的传递来防止注入
SqlDataReader
提供一种从SQLSERVER数据库中读取只进的行流的方式。
特点:快速的、轻量的、只读的,遍历访问每一行数据的数据流,向一个方向,一行一行的,不
能向后读取,不能修改数据。
缺点:不灵活,只适合数据小的情况,读取数据,一直占用连接
读取方式:Read()获取第一行的数据,再次调用Read()方法
当调用Read()方法时返回False时,就表示不再有数据行。
注意:连接对象必须一直保持Open状态,使用完成后,应该马上调用close()关闭,不然Reader一直占用连接。
创建方式:时不能直接构造的,cmd.ExecuteReader()来创建。关闭reader对象时,就会自动关闭连接。读取时,尽量使用与数据库字段类型相匹配的方法来去的对应的值。
DataTable:
DataSet:数据在内存中的缓存(数据库) Ado.Net核心组件。DataTable:内存中一个表
结合DataAdapter使用;列:DataColumn 行:DataRow
常用属性:Columns 列集合 Rows 行的集合 Contains约束的集合 DataSet:DataTable所属的DataSet
方法:AcceptChanges() 提交更改
         RejectChanges() 回滚更改
   Clear() 清空数据
          Copy() 复制架构和数据
   Clone() 只复制架构,不包含数据
DataSet:Ado.Net的核心组件
由一组DataTable组成
DataRelation:主外键约束,唯一约束
SqlDataAdapter:适配器(桥接器):DataSet数据之间检索和保存数据的桥梁。
                         SqlDataAdapter    和    SqlDataReader的    区别:
速度:        慢(数据少不明显)       快
数据量:        大                       小
内存:        大                       小
连接:        断开与连接            一直占用
读取方式:    一次加载到内存中            读一条丢一条,只能进不能退
   ,任意读取,灵活           不灵活、不可修改
   可修改                    
事务:一组操作,一次性提交,回滚,结果:成功,失败
执行过程:开启--成功就提交,失败就回滚,事务放在存储过程中


























成功在commit tran 下return1,失败在rollback tran回滚return
0,返回一个状态 填充DataSet有参数和无参数,可以一个或多个结果集,在da.Fill前面加conn.Open()后面加conn.Close()这样填充比较快

原文地址:https://www.cnblogs.com/renleiblog/p/13329176.html