由于C#中ADO.NET对Oracle的命名空间引用时提示过时,为此想用Linq对数据库的连接等操作(见补充)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由于C#中ADO.NET对Oracle的命名空间引用时提示过时,为此想用Linq对数据库的连接等操作(见补充)相关的知识,希望对你有一定的参考价值。
写一个类库,以供程序中需要进行数据库连接时调用,这个公共类库,就相当于用ADO.NET写一个公共类库时,如果要进行数据库连接的切换等,只需修改配置文件*.config的节点配置即可,重新生成dll文件进行更新,而不用去修改程序主体中的代码,由于小弟刚接触Linq,还望朋友能提供这样一个类库的编写方法,让我有所参考谢谢
参考技术A LINQ只能用在Sql Server数据库 参考技术B 这个貌似不行···· 参考技术C 新建一个类项目,把要完成的功能,实现了,编译成一个dllADO.NET(课程学习内容)
1.ADO.NET概述
·什么是ADO.NET?
- ADO.NET是一种访问数据库的技术,是.NET 托管应用程序的数据库API
- 位于System.Data及其子命名空间中的类型集合,用来在.NET平台内访问和处理数据库中的数据
- ADO革命性的、更可靠的继承者
- 为基于Web的无连接环境而设计
- 得到了高级XML支持的编程模型
·ADO.NET对象模型
·已连接环境
1.在已连接环境中,用户可以经常连接到数据源
2.优点
更安全、更容易维护
更容易控制并发性
与非连接环境比较,数据刷新更及时
3.缺点
必须有固定的数据库连接
扩展性不好
·非连接环境
1.在非连接环境中,用户可以在非连接的计算机上使用数据的子集,以后再将其更新到数据源
2.优点
任何时候都可用,并可随时连接到数据源进行处理
共享连接资源
提高了应用程序的性能和扩展性
3.缺点
数据不能保证是最新的
可能发生更新冲突,要想办法解决
2.数据提供程序
·.NET 框架包含 4 种数据提供程序
SQL Server 数据提供程序
OLE DB 数据提供程序
ODBC 数据提供程序
Oracle 数据提供程序
·数据提供程序包括四种类型的对象
1.Connection对象
表示与一个数据库的物理连接,主要负责打开、关闭、改变数据库以及管理事务
2.Command对象
表示在数据源上执行的一条SQL语句或一个存储过程
一个Connection对象可以独立的创建和执行不同的Command
3.DataReader对象
一种快速、低开销的对象,用于从数据源中获取只读的数据流
4.DataAdapter对象
Connection对象和DataSet之间的桥梁
由四个Command对象组成
·数据提供程序之间的关系
3.连接对象
·SqlConnection类
1.构造连接对象
2.打开和关闭连接
4.命令对象
·SqlCommand类
构造命令对象
·SqlCommand类
ExecuteNonQuery方法
执行非查询命令,例如Insert、Update、Delete
返回命令影响到的行数
ExecuteScalar方法
执行一个SQL命令,并返回结果集的第1列第1行的值
适合执行COUNT、AVG、MIN、MAX、SUM函数
该函数返回Object类型,须进行类型转换
ExecuteReader方法
返回DataReader对象
DataReader对象是一个快速、只读、只进的的数据流
DataReader对象用后应关闭,否则不能重用与之关联的连接对象和命令对象
5.事务处理
·事务
一项事务(Transaction)就是必须作为单个工作单元来对待的一系列操作
同一事务中的操作要么全部成功,要么全部失败
ADO.NET通过Transaction对象来支持事务
Transaction对象是在打开的连接上创建的,方法是将Transaction对象的引用分配给连接对象的Transaction属性
如果事务提交,构成该事务的所有命令将会永久地写入数据源,如果事务回滚,所有的命令将从数据源取消
·创建事务
调用Connection对象的BeginTransaction方法创建事务
BeginTransaction()
开始事务
BeginTransaction(IsolationLevel)
在指定的隔离级别开始事务
IsolationLevel.ReadCommitted : sqlserver默认级别。
IsolationLevel.ReadUncommitted
IsolationLevel.RepeataRead
IsolationLevel.Serializable
BeginTransaction(TransactionName)
开始事务,并指定事务名称
BeginTransaction(IsolationLevel,TransactionName)
在指定的隔离级别开始事务,并指定事务名称
·SqlTransaction 类
6.参数化命令
·使用参数化命令
构造参数化的命令字符串
向Command对象的Parameters集合调用Add方法添加参数
运行时给参数赋值
7.存储过程
·编写一个存储过程
·调用存储过程
·带返回参数的存储过程
·调用存储过程并检索返回值和输出参数
8.DataSet
·什么是 DataSet ?
数据集(DataSet)是记录在内存中的数据,类似于一个简化的关系数据库
DataSet和数据源并没有连接在一起
DataSet不知道自身所包含的数据来自哪里
DataSet 的组成
DataTableCollection
由DataTable组成,DataTable由Column集合、Row集合和Constraint集合组成
DataRelationCollection
由DataRelation组成
·DataSet 的分类
ADO.NET支持非类型化数据集和类型化数据集
非类型化数据集
System.Data.DataSet类的实例
类型化数据集
从System.Data.DataSet类继承而来的类的实例
两者之间的区别
类型化数据集把表和表内的列作为对象属性公开,可直接通过名称来引用表和列
类型化数据集允许对数据值进行编译时检查
类型化数据集比较消耗资源
·创建数据集
创建类型化数据集一般使用组件设计器来创建
创建非类型化数据集
可以使用组件设计器创建,也可以使用编程方式创建
·数据集中重要的属性
Tables集合
Relations集合
·数据集的 Tables 集合
对于类型化数据集,Tables集合是由数据集架构定义的
对于非类型化数据集,Tables集合可以通过设计器创建表和表中的列,也可以使用编程方式创建表和表中的列
·数据集的 Relations 集合Relations集合
可包含零个或多个数据关系对象,每个对象表示两个表之间的关系
对于非类型化数据集,Relations集合可以通过关系集合编辑器或以编程方式添加数据关系对象
对于类型化数据集可以使用XML架构设计器或以编程方式添加数据关系对象
·数据集方法
Clone方法
创建一个数据集副本,包括数据集的表、关系和约束对象
Copy方法
Clone方法只复制数据集的结构,Copy方法即复制数据集结构也复制其数据
Clear方法
9.DataAdapter
·DataAdapter 的角色
·DataTable的组成
数据表包含了实际的数据,数据表可以是数据集的一部分,也可以单独创建
数据表的基本功能是包含三种集合的容器
列集合:定义表的结构
行集合:包含的数据本身
约束集合:执行数据的完整性约束
·枚举DataSet中的表名
·枚举表中的行
·枚举表中的列
·在DataTable中插入记录
创建与表匹配的新行
给新增加的行赋值
添加新行到数据集
·在DataTable中选择记录
DataTable.Select方法
·在DataTable中更新数据
·在DataTable中删除记录
·DataRow 的状态和版本
RowState属性
数据行的RowState属性反映了数据表创建后或最近一次调用AcceptChanges后所执行的操作,其值由DataRowState枚举定义
Added、Deleted、Detached、Modified、Unchanged
行的版本
根据最近一次调用AcceptChanges以来对数据行的操作,数据表可以维持数据行的多个版本
Current、Default、Original、Proposed
·接受和拒绝数据修改
AcceptChanges
数据集、数据表、数据行都支持该方法
DataAdapter的Update方法自动调用该方法
RejectChanges
放弃对数据集的修改
该方法将数据集恢复到上次调用AcceptChanges后的状态,放弃所有的新行,恢复被删除的行并把所有的列恢复到其初始值
这两个方法把数据行的RowStaus设为Unchanged
·从数据库初始化 DataSet
DataAdapter.Fill方法
以上代码完成的工作
打开数据库连接
对pubs数据库执行查询
在DataSet中创建一个名为Titles的DataTable并使用Titles表的架构初试化DataTable
检索查询产生的所有记录,写入DataTable中
关闭数据库连接
·把更改写回数据库
DataAdapter.Update方法
可以一次更新一个DataTable或者更新整个DataSet
·CommandBuilder 类
根据SelectCommand生成其他三个命令
10.DataTable
·添加唯一约束
UniqueConstraint
·添加外键约束
ForeignKeyConstraint
11.DataView
创建 DataView
DataView dv = new DataView(ds.Tables[“*”]);
DataView 的属性
Table
获取或设置源DataTable
Sort
RowFilter
从视图中筛选数据
DataView 的方法
Find
根据主键查询
以上是关于由于C#中ADO.NET对Oracle的命名空间引用时提示过时,为此想用Linq对数据库的连接等操作(见补充)的主要内容,如果未能解决你的问题,请参考以下文章