VC数据库开发

VC数据库开发

转载请标明出处: http://blog.csdn.net/tyt2008cn/archive/2005/01/18/258160.asp 本文来自 CSDN 博客。x

2 . 12 数据类型

C 数据类型用于应用顺序代码中。 ODBC 使用两类数据类型: SQL 数据类型和 C 数据类型。 SQL 数据类型用于数据源。

2 . 13 句柄

这是一个强有力的手段。 ODBC 语句除了能执行 SQL 语句和完成查询操作之外, ODBC API 实现数据库操作的手段是语句。还能实现大多数数据库操作。

使用不同的句柄( HA NDLE 来标志环境 ( ENVIRONMENT 连接 ( CONNECTION 语句( STA TEMENT 描述器( DESCRIPTOR 等。 ODBC 中。

系统用它来存储关于应用顺序的上下文信息和应用顺序所用到一些对象。和 Window 编程中的概念类似,句柄就是一个应用顺序变量。不过 ODBC 更加完善了句柄的作用。

使用 ODBC 每个顺序从创建环境句柄开始, 1 环境句柄是 ODBC 中整个上下文的句柄。以释放环境句柄结束。所有其它句柄(这一应用程序所有的联接句柄和语句句柄)都由环境句柄中的上下文来管理。环境句柄在每个应用顺序中只能创建一个。

这不仅合法而且很有用;但不要生成不必要的句柄以免资源的浪费。但是不同的驱动顺序支持的联接情况有所不同, 2 联接句柄管理有关联接的所有信息。联接句柄可以分配多个。有的驱动顺序在一个应用顺序中仅支持一个联接句柄,有的驱动顺序仅支持一个语句句柄。应用顺序中,可以在任何适当的时候联接或脱离数据源,但不要轻易地建立或脱离联接。

每个语句句柄只与一个联接有关。当驱动顺序接收一个来自应用顺序的函数调用指令而该指令包括一个语句句柄时, 3 语句句柄是 ODBC API 真正发挥重要作用的被用来处理 SQL 语句及目录函数。驱动顺序管理器将使用存储在语句句柄中的联接句柄来将这一函数调用发送给合适的驱动顺序。

这些元数据描述了 SQL 语句的参数、记录集的列等信息。当有语句被分配内存之后, 4 描述器句柄是元数据的集合。描述器自动生成,称为自动分配描述器。顺序中,应用顺序也可调用 SQLA llocHandl 分配描述器。

驱动管理器或者 ODBC 驱动顺序将为所声明的句柄类型分配内部结构,当应用顺序调用 API 函数 SQLA llocHandl 时。返回句柄值。

2 . 14 异常处置

发现顺序错误,为了顺序开发过程中调试程序。 ODBC API 通过两种方式返回有关 ODBC API 函数执行的信息:返回码和诊断记录。返回码返回函数执行的返回值,说明函数执行胜利与否。诊断记录说明函数执行的详细信息。

返回码( Return Code

指示函数执行的胜利与否。如果函数调用胜利,每一个 ODBC API 函数都返回一个代码 — 返回码。返回码为 SQL_SUCCESS 或 SQL_SUCCESS_WITH_INFO SQL_SUCCESS 指示可通过诊断记录获取有关操作的详细信息, SQL_SUCCESS_WITH_INFO 指示应用顺序执行结果带有警告信息,可通过诊断记录获取详细的信息。如果函数调用失败,返回码为 SQL_ERROR

判断函数执行的胜利与否,下面的一段代码根据函数 SQLFetch 执行的返回码。从而据此进行相应的处置。

SQLRETURN rtcode;

SQLHSTMT hstmt;

While rtcode=SQLFetch hstmt !=SQL_NO_DA TA

{

if rtcode==SQL_SUCCESS_WITH_INFO

{

// 显示警告信息

}

else

{

// 显示出错信息

break;

}

进行处置 // 函数调用胜利。

}

返回码为 SQL_INVA LID_HA NDLE 顺序无法执行,如果顺序执行错误。而其它返回码都带有顺序执行的信息。

诊断记录 ( Diagnost Record

直到下一个使用同一个句柄的函数调用,每个 ODBC API 函数都能够发生一系列的反映操作信息的诊断记录。这些诊断记录放在相关连的 ODBC 句柄中。该诊断记录一直存在诊断记录的大小没有限制。

这些域在头记录和状态记录中是不同的 诊断记录有两类:头记录( Head Record 和状态记录( Statu Record 头记录是第一版权法记录 ( Record 0 后面的记录为状态记录。诊断记录有许多的域组成。

另外,可以用 SQLGetDiagField 函数获取诊断记录中的特定的域。可以使用 SQLGetDiagRec 获取诊断记录中一些常用的域,如 SQLSTA TE 原始错误号等。

头记录

无论函数执行胜利与否,只要不返回 SQL_INVA LID_HA NDLE, 头记录的各个域中包含了一个函数执行的通用信息。都会生成头记录。

状态记录

包括 SQLSTA TE 原始错误码、诊断信息、列号和行号等。只有函数执行返回 SQL_ERROR, 状态记录中的每个域包含了驱动管理器、 ODBC 驱动顺序或数据源返回的特定的错误或警告信息。SQL_STILL_EXEUTING SQL_SUCCESS_WITH_INFO SQL_NEED_DA TA 或 SQL_NO_DA TA 时,才会生成诊断记录。

使用 SQLGetDiagRec 和 SQLGetDiagField

这两个函数返回最近使用该句柄的函数的诊断信息。当有使用该句柄的函数执行时,应用顺序可以调用函数 SQLGetDiagRec 或 SQLGetDiagField 获取诊断信息。对于给定的句柄。句柄记录所记录的原有的诊断信息被覆盖。如果函数执行后发生多个状态记录,顺序必需多次调用这两个函数以获取信息

 

但是由于直接使用 ODBC API 编写的顺序相对要简洁、高效 二)虽然直接应用 ODBC API 编制应用顺序相对来说较为繁琐。

2 . 2 应用 ODBC API 建立应用顺序

但是由于直接使用 ODBC API 编写的顺序相对要简洁、高效。所以,虽然直接应用 ODBC API 编制应用顺序相对来说较为繁琐。有必要学习直接使用 ODBC API 编程。

 

看图之王 ACDSee 6.0 应用大全   数码人像照片矢量化及艺术处理

六天学会 Visual Basic 数据库编程 解析 “ 震荡波 ” 恶性蠕虫病毒

编写 ODBC 顺序主要有以下几个步骤: 一般地。

分配 ODBC 环境

分配连接句柄

连接数据源

构造和执行 SQL 语句

取得执行结果

断开同数据源的连接

释放 ODBC 环境

2 . 21 分配 ODBC 环境

第一步的工作是装载驱动顺序管理器,对于任何 ODBC 应用顺序来说。然后初始化 ODBC 环境,分配环境句柄。

顺序中声明一个 SQLHENV 类型的变量,首先。然后调用函数 SQLA llocHandl 向其中传送分配的上述 SQLHENV 类型的变量地址和 SQL_HA NDLE_ENV 选项。如下代码所示:

SQLHENV henv;

SQL_NULL_HA NDLE,SQLA llocHandl SQL_HA NDLE_ENV.&henv ;

驱动顺序分配一个结构,执行该调用语句后。该结构中存放环境信息,然后返回对应于该环境的环境句柄。

2 . 22 分配连接句柄

建立至数据源的连接之前,分配环境句柄后。必需分配一个连接句柄,每一个到数据源的连接对应于一个连接句柄。

顺序定义了一个 SQLHDBC 类型的变量,首先。用于存放连接句柄,然后调用 SQLA llocHandl 函数分配句柄。如下代码所示:

SQLHDBC hdbc;

henv,SQLA llocHandl SQL_HA NDLE_DBC.&hdbc ;

henv 为环境句柄。

2 . 23 连接数据源

可以设置连接属性,当连接句柄分配完成后。所有的连接属性都有缺省值,但是可以通过调用函数 SQLSetConnectA ttr 来设置连接属性。用函数 SQLGetConnectA ttr 获取这些连接属性。

函数格式如下:

SQLINTEGER Attribute,SQLRETURN SQLSetConnectA ttr SQLHDBC ConnectionHandle.SQLPOINTER ValuePtr,SQLINTEGER StringLength ;

SQLINTEGER Attribute,SQLRETURN SQLGetConnectA ttr SQLHDBC ConnectionHandle.SQLPOINTER ValuePtr,SQLINTEGER StringLength ;

应用顺序可以根据自己的需要设置不同的连接属性。

就可以建立到数据源的连接了对于不同的顺序和用户接口,完成对连接属性的设置之后。可以用不同的函数建立连接: SQLConnect SQLDriverConnect SQLBrowseConnect

SQLConnect

只要提供数据源名称、用户 ID 和口令,该函数提供了最为直接的顺序控制方式。就可以进行连接了

函数格式 :

SQLCHA R ServerName,SQLRETURN SQLConnect SQLHDBC ConnectionHandle.SQLSMA LLINT NameLength1,SQLCHA R UserName,SQLSMA LLINT NameLength2,SQLCHA R *A uthentication,SQLSMA LLINT NameLength3 ;

参数 :

ConnectionHandl 连接句柄

ServerNam 数据源名称

NameLength1 数据源名称长度

UserNam 用户 ID

NameLength2 用户 ID 长度

Authent 用户口令

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值