2024年4月11日发(作者:)

C# 中OleDb的相关应用

2007-09-24 13:06:44| 分类: 技术类 | 标签: |字号大中小 订阅

使用OleDb托管提供者

如果您熟悉了某个托管提供者,那么就可以很容易地操作其他提供者。首先来看一下如何使

用OleDb托管提供者进行连接。当您需要连接到除MS SQL Server之外的数据源时,就得

使用定义在中的类型。表A-12列出了一些核心的类型。

表A-12 命名空间的类型

类型

OleDbCommand

OleDbConnection

OleDbDataAdapter

OleDbDataReader

OleDbErrorCollection

OleDbError

OleDbException

OleDbParameterCollection

OleDbParameter

意 义

表示一个可用于数据源的SQL查询命令

表示对数据源的一个开放连接

表示一些数据命令和用来填充DataSet、更新数据源的数

据库连接

能够从一个数据源中读取一个前向型的数据记录流

OleDbErrorCollection拥有一些从数据源返回的警告和错

误集合,每个OleDbException都表示为OleDbError类型。

如果遇到错误,就会抛出OleDbException类型的异常

与典型ADO非常类似,OleDbParameterCollection 集合保

存了要传递给数据库中存储过程的参数。每个参数的类型

都是OleDbParameter

A.14.1 使用OleDbConnection类型建立连接

使用OleDb托管提供者的第一步就是使用OleDbConnection类型建立一个与数据源的会话。

类似于典型ADO Connection对象,OleDbConnection类型也提供了一个格式化的连接字符

串,包含了一些名/值对。您可以用这个信息来表示标识要连接的机器名称、所需的安全设

置、机器上数据库的名称,以及最重要的OLE DB提供者的名称(可以从在线帮助中找到每

个名/值对的完整说明)。

可以使用OleDbConnection来设置连接字符串。ConnectionString属性可以作为构造函数的

参数。假设您想用SQL OLE DB提供者连接到一个叫做BIGMANU的机器上的Cars数据库。

可以用下面的逻辑来完成这一步:

// Build a connection string.

OleDbConnection cn = new OleDbConnection();

tionString = "Provider=SQLOLEDB.1;" + // Which provider?

"Integrated Security=SSPI;" +

"Persist Security Info=False;" + // Persist security?

"Initial Catalog=Cars;" + // Name of database.

"Data Source=BIGMANU;"; // Name of machine.

从前面代码的注释可以知道,Initial Catalog名称指的就是您要建立与之会话的数据库(Pubs,

Northwind,Cars等)。Data Source名称表示维护这个数据库的机器名称。最后一个就是

Provider部分,它指定了用来访问数据存储的OLE DB提供者的名称。表A-13列出了一些

可能值。

表A-13 核心的OLE DB提供者

提供者部分值 意 义

.4.0

MSDAORA

SQLOLEDB

可以用Jet OLE DB提供者连接Access数据库

可以用OLE DB提供者连接Oracle

可以用OLE DB提供者连接MS SQL Server

当配置好连接字符串后,接下来就是打开与数据源的会话,执行一些操作,然后释放与这个

数据源的连接,如下所示:

// Build a connection string (can specify User ID and Password if needed).

OleDbConnection cn = new OleDbConnection();

tionString = "Provider=SQLOLEDB.1;" + // Which provider?

"Integrated Security=SSPI;" +

"Persist Security Info=False;" + // Persist security?

"Initial Catalog=Cars;" + // Name of database.

"Data Source=BIGMANU;"; // Name of machine.

();

// Do some interesting work here.

();

除了ConnectionString、Open()和Close()成员之外,OleDbConnection类还提供了很多可以配

置与连接相关的设置的成员,比如超时设置和事务信息。表A-14显示了一部分内容。

表A-14 OleDbConnection类型的成员

OleDbConnection成员

BeginTransaction()

CommitTransaction()

RollbackTransaction()

Close()

ConnectionString

ConnectionTimeout

Database

DataSource

Open()

Provider

State

关闭与数据源的连接。这是首选的方法

获得或设置用于打开一个与数据存储的会话的字符串

获得或设置在终止和生成错误之前建立一个连接需要等待

的事件。默认值为15秒

获得或设置当前数据库或者是连接打开后所用到的数据库

名称

获得或设置要连接的数据库名称

用当前的属性设置打开数据库连接

获得或设置提供者的名称

获得当前连接的状态

意 义

用来以编程方式提交、取消或回滚当前事务

A.14.2 构建SQL命令

OleDbCommand类是SQL查询的OO表示形式,并且可以用CommandText属性操作查询。

命名空间中的很多类型都需要OleDbCommand作为一个方法参数来发送请求到

数据源。在保留了原先的SQL查询之外,OleDbCommand类型还定义了其他一些成员,您

可以使用它们来配置不同类型的查询(表A-15)。

表A-15 OleDbCommand的成员

OleDbCommand成员

Cancel()

意 义

取消命令的执行