zoukankan      html  css  js  c++  java
  • 数据库OleDbConnection对象参考

     

     

    OleDbConnection对象属性

    ConnectionString属性

    String类型.唯一的非只读属性.控制对象连接数据源的方式.

    连接到数据源之后,属性只读.

    ConnectionTimeOut

    Int32类型.以秒为单位,在计时结束之前尝试连接数据库.

    JetOracle的数据提供者不支持这一特性

    Database

    String类型,返回已连接或即将连接的数据库名称

    专为支持多个数据库的数据源设计,

    DataSource

    String类型,返回已连接或即将连接的数据源位置

    基于服务器的数据存储,它会返回服务器计算机名

    基于文件的数据库,会返回文件位置.

    Provider

    String类型,数据源提供者名称

    ServiceVersion

    String类型,数据源版本,常用于确保不向服务器作出不支持的调用.

    State

    ConnectionState类型,对象当前状态

    连接状态常量

    Broke

    =16,表示连接已经断开

    Closed

    =0,连接已经关闭

    Connecting

    =2.正在连接

    Executing

    =4,正在执行查询

    Fetching

    =8.查询正在取得数据

    Open

    =1 .连接已经打开

    后话

    你可以使用Connection对象的StateChange事件来确定State属性的值何时变化.

    OleDbConnection对象的方法

    OleDbConnction对象常用方法表

    方法名

    简述

    BeginTransaction

    在连接上启动一个事务

    ChangeDatabase

    在一个打开的连接上更改当前数据库

    Close

    关闭连接

    CreateCommand

    为当前连接创建一个OleDbCommand

    GetOleDbSchemaTable

    从数据源获取架构信息

    Open

    打开连接

    ReleaseObjectPool

    Ole Db连接池中释放连接

    BeginTransaction方法

    用于启动一个事务(事务是为锁定数据或确保你可以提交或回滚一系列更改而使用的功能)

    返回一个Transaction对象.(想要提交事务处理,就在Transaction对象上调用Commit方法;想要回滚事务,就调用Transaction对象的Rollback方法)

    代码演示

    Dim txn As OleDb.OleDbTransaction=cn.BeginTransaction()

    等价于

    Dim txn As New OleDb.OleDbTransaction()

    Txn.connection=cn

    Txn.Begin()

    ChangeDatabase方法

    Sql Server,可以使用查询USE Northwind修改正在通讯的数据库

    ADO.NETConnection简化了该过程

    代码演示

    Dim cn As New OleDbConnection(strConn)

    Cn.Open()

    Cn.ChangeDatabase(“Northwind”)

    等价于

    Dim Cn As New OleDbConnection(strConn)

    Cn.Open()

    Dim Cmd As OleDbCommand=cn.CreateCommand()

    cmd.Commandtext=”USE Northwind”

    cmd.ExecuteNonQuery()

    Close()方法

    用于关闭Connection对象

    切记,如果你正在使用连接池,那么这个方法只不过将与数据源的物理连接放入连接池中.

    CreateCommand方法

    用于创建新的Command对象.该方法不接受任何参数,返回一个新的Command对象(返回的对象的Connection属性被设置为创建它的Connection对象)

    代码演示:

    Dim strConn As String="Provider=SQLOLEDB;Data Source={local}"NetSDK;"&_

                                "Initial Catalog=Northwind;Trusted_Connection=Yes;"

    Dim cn As New OleDbConnection(strConn)

    Dim Cmd As OleDb.OleDbCommand=cn.CreateCommand()

    等价于

    Dim strConn As String="Provider=SQLOLEDB;Data Source={local}"NetSDK;"&_

                                "Initial Catalog=Northwind;Trusted_Connection=Yes;"

    Dim cn As New OleDbConnection(strConn)

    Dim cmd Ad new OleDb.OleDbCommand()

    cmd.Connection=cn

    GetOleDbSchemaTable方法

    用于获取数据库架构信息.

    第一个参数OleDbSchemaGuid是一个枚举类型,可以指定返回的架构信息的类型比如表/列或过程

    第二个参数Restrictions,作为方法返回信息的过滤器.它包含这一个值数组

    签名式

    Public Function GetOleDbSchemaTable(ByVal schema As System.Guid, ByVal restrictions() As Object) As System.Data.DataTable

    返回值的列结构(全部)

    TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,TABLE_GUID,DESCRIPTION,TABLE_PROPID,DATE_CREATED,DATE_MODIFIED

    代码演示

    获取所有的列信息

    Dim strConn As String="Provider=SQLOLEDB;Data Source={local}"NetSDK;"&_

                                "Initial Catalog=Northwind;Trusted_Connection=Yes;"

    Dim cn As New OleDbConnection(strConn)

    cn.Open()

    Dim tbl as DataTable

    tbl=cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,Nothing)

    获取指定表中的列信息

    可以使用Restrictions参数,并提供所需表的名称

    成员的Restrictions数组应该有如下结构:

    {"TABLE_CATALOG","TABLE_SCHEMA","TABLE_NAME","COLUMN_NAME"}

    Dim strConn As String="Provider=SQLOLEDB;Data Source={local}"NetSDK;"&_

                                "Initial Catalog=Northwind;Trusted_Connection=Yes;"

    Dim cn As New OleDbConnection(strConn)

    cn.Open()

    Dim objRestrictions As Object() '对象数组

    objRestrictions=new Object(){Nothing, Nothing, "Customers", Nothing}

    Dim tbl as DataTable

    tbl=cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,objRestructions)

    讨论

    GetOleDbSchemaTable方法依赖于OleDbConnection所使用的OLE DB提供者的功能.

    如果请求了不支持的架构,将会引发异常.

    Open方法

    用于尝试打开一个与数据源之间的连接.

    如果尝试连接失败,将会引发异常.

    在一个已经打开的连接上调用Open方法,会先关闭再重新打开该连接.

    如果连接池可用,这种情况就会产生一个附加连接.初始连接会被放入连接池

    但是,因为连接池是在另外一个线程上处理的,所以连续的请求连接时,初始连接有可能是无法使用的.

    代码演示

    Dim strConn As String="Provider=SQLOLEDB;Data Source={local}"NetSDK;"&_

                                "Initial Catalog=Northwind;Trusted_Connection=Yes;"

    Dim cn As New OleDbConnection(strConn)

    try

           cn.Open()

    catch ex as exception

           Console.WriteLine(ex.Message)

    end try

    ReleaseObjectPool方法

    用于释放对连接池的引用.(可以在连接或在OleDbConnection类本身调用)

    自己管理物理连接(比较好的做法)

    创建连接时,在连接字符串中包括如下代码段:

    OLE DB Services=-4

    OleDbConnection对象的事件

    公开的对象事件列表

    InfoMessage

    当连接从数据源处接收到一个信息性消息时被触发

    StateChange

    当连接的State属性发生变化时被触发

    InfoMessage事件

    某些数据库系统提供信息性消息.比如:Sql Server.

    Sql Server允许通过PRINT命令向客户端发送消息(消息不会作为错误而返回,也不包含在查询的结果之中)

    使用此事件,捕获此类消息.

    Sql Server还支持用RAISEERROR命令来生成信息性消息.如果该命令创建的错误的严重性级别在10级以下,它会被当作信息性消息处理.

    代码演示

    Dim strConn As String="Provider=SQLOLEDB;Data Source={local}"NetSDK;"&_

                                "Initial Catalog=Northwind;Trusted_Connection=Yes;"

    Dim cn As New OleDbConnection(strConn)

    AddHandler cn.InfoMessage, AddressOf cn_InfoMessage

    cn.Open()

    with cn.CreateCommand()

           .CommandText="PRINT 'Hello ADO.NET!'"

           .ExecuteNonQuery()

    end with

    public Sub cn_InfoMessage(Byval Sender as Object, ByVal e As System.Data.OleDb.OleDbInfoMessageEventArgs)

           console.WriteLine("InfoMessage Event Occurred.")

           console.writeLine(vbTab & "Message received: " & e.Message)

    End Sub

    StateChange事件

    只要Connection对象的State属性值发生变化,这个事件就会被触发.

    利用这个事件给应用程序主窗体的底端状态条增加显示连接状态功能

    代码演示

    Dim strConn As String="Provider=SQLOLEDB;Data Source={local}"NetSDK;"&_

                                "Initial Catalog=Northwind;Trusted_Connection=Yes;"

    Dim cn As New OleDbConnection(strConn)

    AddHandler cn.StateChange, AddressOf cn_StateChange

    cn.Open()

    cn.Close()

    Public Sub cn_StateChange(ByVal sender as Object, ByVal e as System.Data.StateChangeEventArgs)

           Console.WriteLine("StateChange Event Occurred.")

           Console.WriteLine(vbTab & "From " & e.OriginalState.toString)

           Console.WriteLine(vbTab & "To " & e.CurrentState.toString)

    End Sub

  • 相关阅读:
    蛙蛙推荐:简单介绍一下托管容器持久性(CMP),顺便征集一下.NET CMP2.0的改进方案
    15分钟内快速构建数据访问层(翻译)
    【蛙蛙推荐】.NET 2.0里使用强类型数据创建多层应用
    蛙蛙推荐:迎接web2.0:写一个RSS.HTC组件
    蛙蛙推荐:web下的授权简单解决方案
    J2me访问c# Web Services
    2006年3月份技术随笔
    声讨vs.net,讨论用户控件,编码等问题
    Hadoop中mapred包和mapreduce包的区别
    hbase MapReduce程序样例入门
  • 原文地址:https://www.cnblogs.com/lizunicon/p/1289888.html
Copyright © 2011-2022 走看看