Ado.net(uwp数据库连接,针对SqlServer)听课笔记
Ado.net的组成
对象 | 作用 | 重要方法 |
---|---|---|
Connection | 提供与数据库的连接 | sqlConnection |
Command | 执行数据库命令的对象 | sqlCommand |
DataReader | 从数据源中提供快速的,只读的数据流 | sqlDataReader |
DataApdater | 提供Dataset对象与数据源的桥梁 | Fill 、update |
Ado.Net访问数据库的步骤
- 连接到数据库
- 打开连接
- 创建执行对象(创建对象)
- 执行命令
- 关闭连接
sqlConnection类
- 继承于DbConnection抽象基类,不能被实例化
- SqlConnection对象的方飒 (SqlConnection conn = new SqlConnection())
- ConnectionString=" "; //连接字符串
- Database;//要连接的数据库名称
- Datasource //数据源服务器名称(本地loucal 或 . )(远程 Ip,端口号)
- Stste //连接的状态
- ConnectionTimeout //尝试连接,等待时间默认15s
- close与Dispose方法区别:close关闭后还能打开,然而Dispose不行
方法State
关键字 | 状态 |
---|---|
closed | 已关闭 |
open | 打开 |
connnecting | 正在连接 |
Executing | 正在执行命令 |
Breken | 连接中断 |
fetchong | 正在检索数据 |
链接字符串的使用
连接字符串是:字符串,一组被格式化的键值对,数据源在哪里,提供什么样的访问信任级别,其他相关信息。
1.sql server身份验证
- 示范 string connStr = “server=.; Initial Catalog= 数据库名;User=Id;Password=password”
可以使用User—id表示键值对
2.windows身份验证- 示范 string connStri = “Data Source(server)=…;Initial Catalog = 数据库名:Integrated Security=SSPI”
- 使用SqlConnectionStringBuilder基类来创建简介字符串
- 使用SqlConnectionStringBuilder对象的属性设置连接字符串
1.对象。DataSource=“.” //设置数据源
2.INitialCatalog = “Testbase ” //连接的数据库名
3.UserID 和Password
代码中写连接字符串,如果要修改,过后重新编译,灵活性差,如何解决?
答:存储连接字符串到配置文件 - 在后缀为.config 文件添加 connectionStrings 节点
- 使用SqlConnectionStringBuilder对象的属性设置连接字符串
连接对象的创建及使用
== == =================== ==================
using
- using语句块 —try finally 没有catch,处理异常 —释放对象
- using 引用命名空间
- using 命别名 // 如:using con = System.IO
连接池(重复利用已有的连接)
- 简介:容器,存放了一定数量的与数据库服务器的物理连接。
- 使用需要:容器里取出一定空闲的连接,而不是常见一条新的连接
- 作用:减少了连接数据库开销,提高应用程序的性能
- 分类:(同一时刻同一应用程序域可以有多个不同类型的连接池)区分标准:进程、应用程序域、连接字符串、windows标识、共同组成的签名来标识区分。
对于同一程序域,由连接字符串来区分。打开一条连接。如果这条连接的类型签名与现有的连接不匹配的连接池 - 分配方式:根据请求的类型,找到与它相匹配的连接池,尽力的分配一条空闲的连接。若已用完,会创建一个新连接调价连接池中,等待,直到有空闲的连接可用。
连接池的使用
Ado.net默认是启用连接池的
- 连接字符串可以控制连接池的行为,三个属性:
- Max Pool Size:最大连接数 100
- Min Pool size:最小连接数:0
- Pooling 是否启用连接池 true
- 同一程序域,同一字符串,使用同一连接池,空格也会造成差异
sqlcommand的介绍与使用
- sqlcommamnd 对SqlServer数据库执行的一个T-SQL语句或存储过程
- SQLCommand对象: Ado.net中执行数据库命令的对象
- Connection属性:SQLCommand对象要使用的SqlConnection
- CommandText:获取或设置要执行的T-Sql语句或存储过程名
- CommandType:CommandType.Text—执行的一个Sql语句
CommandType.StoreProcedure— 执行的是一个存储过程 - Parameters:SqlCommand对象的命令参数集合(默认空集合)
- Transaction:获取或设置要在其中执行的事物
- ExcuteNonQuery方法(增,删,更新DML)
- 返回一个受影响的行数(int)
连接使用原则,最晚打开,尽快关闭
- 返回一个受影响的行数(int)
- ExcuteScalar 方法 (DQL执行查询或存储过程,返回查询结果中的第一行第一列的值)
- ExcuteReader(实时读取的方式)
- 查询返回一个对象,SqlDataReader数据流
- 及时存储
- 关闭的时候,如果之前执行的是不带参数的ExcuteReader,关闭dr,并不会关闭连接,反之亦然 - SqlParameter
- 定义:表示SQLCommand对象的参数,或与DataSet中的映射
- 常用属性:
- DbType 参数的SqlDbtype(数据库的数据类型)
- Direction 参数的类型:输入,输出,返回值参数
- ParameterName 参数的名称
- Size 参数存储数据的最大大小(字节单位)
- Value 参数的值
- SqlValue 作为SQl类型的参数的值
- 构造方法
- 无参
- 有参
-SqlParameter pa = new SqlParameter("@Age",24)
- 顺序是参数名->l类型->大小->源类名
参数的作用
- 防止sql注入,以及转义字符问题