一、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()这样填充比较快