11-19-C#与SQL Server
ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据。之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口。
ado.net可让开发人员以一致的方式存取资料来源(例如 SQL Server 与 XML),以及透过 OLE DB 和 ODBC 所公开的资料来源。资料共用的消费者应用程序可使用ado.net 来连接至这些资料来源,并且撷取、处理及更新其中所含的资料。
ado.net可将资料管理的资料存取分成不连续的元件,这些元件可分开使用,也可串联使用ado.net也包含 .NET Framework 资料提供者,以用于连接资料库、执行命令和撷取结果。这些结果会直接处理、放入ado.net DataSet 物件中以便利用机器操作 (Ad Hoc)的方式公开给使用者、与多个来源的资料结合,或在各层之间进行传递。DataSet 物件也可以与.NET Framework 资料提供者分开使用,以便管理应用程序本机的资料或来自 XML 的资料。
ado.net类别 (Class) 位于 System.Data.dll 中,而且会与 System.Xml.dll 中的XML 类别整合。
ado.net可为撰写 Managed 程式码的开发人员提供类似于ActiveX Data Objects (ADO)提供给原生元件物件模型 (Component Object Model,COM)开发人员的功能。建议使用ado.net而非ADO来存取.NET 应用程序中的资料。
ADO .NET会提供最直接的方法,让开发人员在 .NET Framework 中进行资料存取。
一.五个基本对象
概述
- Connection
- 开启程序和数据库的连接
- Command
- 对数据库发出指令,架构在Connection对象上
- 公开Parameters,并且可以通过Connection在Transaction范围内执行
- DataAdapter
- 在数据源和DataSet之间执行数据传输,通过Command下达指令,并将取得的数据放入DataSet对象中
- DataSet
- 保存数据库中取出的数据
- DataReader
- 读取数据源中的数据,每次只读一笔,而且为只读
基本构造
数据库连接: Connection--> Command-->{ DataReader, DataAdapter-->{ SelectCommand, InsertCommand, UpdateCommand, DeleteCommand } } 数据操作: DataSet-->{ DataRelationCollection, DataTableCollection-->{ DataRowCollection, DataColumnCollection, ConstraintCollection } }
二. 其他对象
- ConnectionStringBuilder
- 数据库连接字符串
- Transaction
- 事务
- CommandBuilder
- 帮助DataAdapter对象自动生成Transact-SQL语句
- 从存储过程派生参数信息并填充Command对象的Parameters集合
- Exception
- 异常
- Error
- 错误
- ClientPermission
- 程序代码访问安全属性
三.四类数据库提供程序
SQLClient,OLE DB,Oracle,ODBC 12
对象简介
一.数据库连接字符串
- ConnectionStringBuilder
属性- DataSource:服务器名,如果是本地数据库服务器,可以赋值”(local)”或”.”,如果为远程服务器,可以赋值IP地址或服务器名
- InitialCatalog:数据库名
- UserId/Password:用户名密码
- web.config
2.1 appSettings vs05之前
"配置" <appSettings> <add key="conn" value="server=;database=;uid=;pwd="/> </appSettings> "获取" System.Configuration.ConfigurationManager.AddSettings["keyname"]
2.2 ConnectionStrings vs05之后
"配置" <connectionStrings> <add name="conn" connectionString="server=;database=;uid=;pwd="/> </connectionStrings> "获取" System.Configuration.ConfigurationManager.ConnectionStrings["name"]
2.3 字符串键值对- 为true或SSPI代表使用,为false不使用,不使用则使用uid和pwd代替。
- OLEDB只适用于SSPI
- ODBC使用键值”Trusted_Connection=yes;”指定。
- 为true或yes代表获取,为false或no代表打开连接后丢弃这些信息
- server同datasource
- database同initial catalog
- persist security info:是否从连接中获取涉及安全的信息,包括标识和密码。
- intergrated security:是否使用windows身份验证
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
二.Connection
- 属性
- ConnectionString:连接字符串
- DataBase:数据库名
- DataSource:服务器名
- 方法
- Open:打开
- Dispose:释放
- Close:关闭
- BeginTransaction:开始事务
三.Command
- 构造函数
- SqlCommand()
- SqlCommand(String)
- SqlCommand(String,SqlConnection)
- SqlCommand(String,SqlConnection,SqlTransaction)
- 属性
- CommandText:执行字符串,sql语句或存储过程的名称
- CommandType:命令类型,指示当前命令是sql语句还是存储过程的名称
- CommandTimeout:最长等待时间
- Connection:Command对象所使用的Connection对象
- 方法
- ExecuteNonQuery:对连接执行一次Transact-SQL语句并返回受影响的行数
- ExecuteReader:将命令信息发送到数据库并生成一个DataReader对象
- ExecuteScalar:检索单个值,返回查询返回结果集中的第一行的第一列,忽略其他行列
四.Transaction
通过Connection对象的BeginTransaction()开始,返回一个DbTransaction对象 12
- 属性
- Connection:关联的Connection对象
- 方法
- Commit:提交事务处理
- Rollback:回滚
- Save:创建保存点
- Dispose:释放资源
五.DataSet
DataSet
- 属性
- DataSetName:当前数据集的名称
- Tables:DataTable对象集合,包含了DataRow对象集合Rows,DataColumn对象集合Columns,Constraint对象集合Constraints
- Relations:DataRelation对象集合
- CaseSensitive:DataTable对象中字符串的比较是否区分大小
- 方法
- Clear:清除数据集中所有表的所有行
- HasChanges:数据集是否更改
- GetChanges:获取DataSet副本,包括上次调用AcceptChanges之后对数据集所做的所有修改
- AcceptChanges:提交更改
DataTable
- 属性
- Columns:DataColumn集合
- Constraints:约束集合,包括ForeignKeyConstraint外键约束和UniqueConstraint唯一性约束
- DataSet:所属数据集
- PrimaryKey:主键的列数组,可写
- Rows:DataRow集合
- DefaultView:默认DataView
- TableName:表名,可写
- 方法
- AcceptChanges:提交修改
- GetChanges:获取DataTable副本,包括上次调用AcceptChanges之后对数据集所做的所有修改
- NewRow:创建一个相同架构的DataRow,创建和不在表中,需DataTable.Rows.Add添加到表中
DataColumn
- 属性
- AllowDBNull:是否允许null值
- ColumnName:列名
- DataType:存储的数据类型
- DefaultView:新建行的默认值
- Table:所属的DataTable
- Unique:值是否必须唯一
DataRow
- 属性
- ItemArray:存储该行所有值的数组
- RowState:当前状态
- 方法
- AcceptChanges:提交修改
- Delete:删除改行
- RejectChanges:拒绝上次调用AcceptChanges之后的所有修改
DataView
- 构造函数
- DataView()
- DataView(DataTable)
- DataView(DataTable,RowFilter,Sort,DataViewRowState)
- DataTable.DefaultView
- DataTable.AsDataView()
- 属性
- AllowDelete:是否允许Delete()
- AllowEdit:是否允许编辑
- AllowNew:是否允许AddNew()
- RowFilter:筛选可以在DataView中查看的行的表达式,可写
- RowStateFilter:行状态DataViewRowState枚举,可写
- 方法
- AddNew:添加新行
- Delete:删除指定索引处的行
六.DataAdapter
- 方法
- Fill:添加或刷新数据集
- Update:将DataSet中的数据存储到数据库服务器上
七.DataReader
不能使用构造函数实例化,必须通过Command对象的ExecuteReader()方法生成 12
- 属性
- HasRows:是否返回了结果
- 方法
- Read:检索行,前进到下一行,并返回是否存在行
- Close:关闭
- GetValue:获取指定索引列的值
- GetValues(object[]):使用当前行的列值填充数据对象
八.DataGridView
数据库模拟控件 12
- 属性
- DataSource:显示数据的数据源
- ColumnCount:在控件中显示的列数,可写
- Columns:所有列的集合
- CurrentCell:当前活动的单元格
- CurrentCellAddress:当前活动单元格的行列索引
- CurrentRow:当前活动单元格的行
- AllowUserToAddRows:是否显示添加行的选项
- AllowUserToDeleteRows:是否允许从控件中删除行
- AllowUserToOrderColumns:是否允许手动对列重新定位