zoukankan      html  css  js  c++  java
  • 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()这样填充比较快

  • 相关阅读:
    Moo.fx 超级轻量级的 javascript 特效库
    Oracle 异常错误处理
    变被动为主动
    数据结构定义
    Redis 一个keyvalue存储系统 简介
    使用Container.ItemIndex获取Repeater、Gridview行的序号的简单方法
    ORACLE SQL:经典查询练手第一篇
    MongoDB 一个基于分布式文件存储的数据库
    dojo Quick Start/dojo入门手册面向对象,定义Class
    面向过程分析与面向对象分析之间的区别
  • 原文地址:https://www.cnblogs.com/renleiblog/p/13329176.html
Copyright © 2011-2022 走看看