数据库编程(二)之DB链接

rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">

3.DB

3.1 SQLAllocEnv

调用:

Rc = SQLAllocEnv(&hEnv);

说明

在调用其他ODBC函数之前,应用程序必须调用SQLAllocEnv来为ODBC环境句柄分配内存并初始化ODBC调用级的接口,程序中传递到SQLAllocEnv的参数是内存地址,该处是函数保存程序的ODBC环境的实际物理地址(句柄)

如果SQLAllocEnv在分配和初始化ODBC环境所使用的内存是成功的,指针hEnv将包括应用程序的函数所使用的ODBC环境的内存地址(或句柄),传递给SQLAllocConnectSQLFreeConnect分配和释放连接句柄和内存资源!

 

3.2 SQLAllocConnect

调用:

rc = SQLAllocConnect(hEnv, &hDbc);

说明:

    ·hEnv是环境句柄,也就是指向程序可找到由SQLAllocEnv函数分配给ODBC环境所使用的内存位置的指针

    ·hDbc是数据库连接句柄,也就是指向程序可找到特定的与DBMS连接的设置和信息的内存位置的指针。SQLAllocConnect函数把实际的连接区域(连接句柄)放在hDbc变量中。

rc = SQLFreeConnect(hDbc)   

正如应用程序调用SQLFreeEnv函数来释放由SQLAllocEnv分配的不再需要的内存一样程序也应该调用SQLFreeConnect函数来释放由SQLAllocConnect所分配的不再需要的内存。

 

3.3 SQLSetConnectOption

调用:

rc = SQLSetConnectOption(hDbc,wOption,dwOpval)

    使用SQLSetConnectOption来设置连接选项,函数选项和选项值如下表所示:

wOption

dwOpVal

SQL_ACCESS_MODE

SQL_MODE_READ_ONLY, SQL_MODE_READ_WRITE

SQL_AUTOCOMMIT

SQL_AUTO_COMMIT_OFF,SQL_AUTO_COMMIT_ON

SQL_CURRENT_QUALIFIER

一个包括数据源限定符得null结尾的字符串,在MS_SQL Server上,数据源限定符是数据库名称。因此,驱动程序将向DBMS发送USE<database>,其中<database>是在dwOpVal中提供字符串

SQL_LOGIN_TIMEOUT

等待DBMS完全登陆请求的秒数,值为0时禁用时限,驱动程序将无限的等待下去,直到DBMS完成登陆请求

SQL_ODBC_CURSORS

SQL_CUR_USE_IF_NEEDED,SQL_CUR_USE_ODBC,SQL_CUR_USE_DRIVER

SQL_OPT_TRACE

SQL_OPT_TRACE_OFF,SQL_OPT_TRACE_ON

SQL_OPT_TRACEFILE

NULL结尾的字符串形式表示的跟踪文件名

SQL_PACKET_SIZE

网络封包容量,以字节计

SQL_QUIET_MODE

ODBC驱动程序显示对话框的窗口句柄,如果设置为等于null指针,则ODBC驱动程序将不显示任何对话框

SQL_TRANSLATE_DLL

一个null结尾的字符串,其中有包括函数SQLDricerTODataSourceSQLDataSourceToDricerODBC驱动程序要装入并用来执行诸如字符串集翻译的DLL文件名

SQL_TRANSLATE_OPTION

ODBC驱动程序传递给翻译DLL32位的整数值

SQL_TXN_ISOLATION

SQL_TXN_READ_UNCOMMITTED,SQL_TXN_READ_COMMITTED,SQL_TXN_REPEATABLE_READ,SQL_TXN_S.

其中:

    ·hDbc是由SQLAllocConnect返回的ODBC环境空间(内存)的连接区域的连接句柄(指向内存起始位置的指针)

    ·wOption是表的连接选项之一

    ·dwOpVal是为wOption设置的值。根据调用SQLSetConnectOption函数要设置的选项dwOpVal即可是32位的整数也可是NULL结尾的字符串。

程序必须为每个想要设置的会话连接选项调用SQLSetConnectOption函数要设置的选项

    rc = SQLSetConnectOption(hDbc,wOption,dwOpval)

ODBC驱动程序为所有活动的语句和所有的接下来使用ODBC函数调用发送到DBMS处理的语句设置选项

3.4 SQLDriverConnect

rc = SQLDriverConnect(hDbc, NULL, ConnString, SQL_NTS, ConnOut, 512,

    &connOutLen, SQL_DRIVER_NOPROMPT);

SQLConnect

是最简单的函数。它只需要数据源名(DSN,Data source name)和可的用名和密.它不提供任何GUI选项例如向用户显示一个对话框来提供更多信息。如果你已有了需要使用的数据DSN就可以使用个函数.

SQLDriverConnect

个函数提供了SQLConnect更多的选择.可以接一个没有在系信息内定的数据源。如没有DSN.另外,可以指定个函数是否需要示 一个对话框来提供更多信息.例如,如果用户遗漏了数据的名字,它会指ODBC驱动程序示一个对话框,选择接的数据.

SQLBrowseConnect

个函数允在运行(RunTime)数据源.SQLDriverConnect更加灵活。因可以多次SQLBrowseConnect,而次提供使用者更多的用信息直到最后得需要的接句柄.

 

我将先检查SQLConnect函数.要使用 SQLConnect,你应先知道什么是DSN. DSN是数据源名(Data Source Name)的缩写,是一个唯一标识某数据源的字符串。一个DSN标识了一个包含了如何连接某一特定的数据源的信息的数据结构.这个信息包括要使用何种 ODBC驱动程序及要连接哪个数据库.我们可以通过控制面板中的32ODBC数据源来创建、修改及删除DSN.

 

SQLConnect的语法如下:

hDbc: DWORD
szDSN: DWORD,
cbDSN: DWORD,
szUID: DWORD,
cdUID: DWORD,
szAuthStr: DWORD,
cbAuthStr: DWORD

·hDbc:是由SQLAllocConnect函数返回的连接句柄。

·szDSN:是以null结尾的字符串,其中有与DBMS连接时ODBC驱动程序适用的数据源名称。

·cbDSN: szDSN参数中DSN的长度。

·szUID: 是于null结尾的字符串,其中有登录到DBMS时使用的用户名。

·cdUID: 用户名的长度

·szAuthStr: 指向该用户名所使用密码的指针

·cbAuthStr: 密码的长度

在最小情况下, SQLConnect 需要连接句柄,DSNDSN的长度。如果数据源不需要的话,用户名和密码就不是必须的.函数的返回值与SQLAllocHandle的返回值相同.假设我们的系统中有一个叫做"Sales" DSN并且我们想连接这个数据源.我们可以这么做:

 

rc =SQLConnect(hDbc, data_source_name, SQL_NTS,user_ID, SQL_NTS, password,SQL_NTS);

注意:在SQL.H中,SQL_NTS的值定义为-3,如果将任何一个字符串的长度参数(cbDSN,cbUID,cbAuthStr)设置为SQL_NTS,系统将决定在其他参数中传递的字符串的长度。

    为了结束DBMS上的会话,可调用SQLDisconnect函数并向其传递想要结束的会话的连接句柄。例如:

    SQLDisconnect(hDbc);

SQLConnect 的缺点是:在接一个数据源之前,须创建它的DSN. SQLDriverConnect 提供了更大的灵活性.它的法如下:

SQLDriverConnect proto ConnectionHandle: DWORD,
hWnd:
DWORD,
pInConnectString:
DWORD,
InStringLength:
DWORD,
pOutConnectString:
DWORD,
OutBufferSize:
DWORD,
pOutConnectStringLength:
DWORD,                              

DriverCompletion: DWORD

  • ConnectionHandle接句柄

  • hWnd 用程序窗口句柄.如果个参数被置NULL,驱动程序将不会户显示一个对话框来示更多信息(如果有的).

  • pInConnectString 指向接字符串的指. 是一个ASCIIZ字符串,格式由要接的具体ODBC驱动程序描述.它描述了驱动程序名、数据源及其他附加属性.接字符串的具体描述MSDN里不再.

  • InStringLength 接字符串的.

  • pOutConnectString 指向将要被填入完整接字符串的冲区的指.冲区将至少有1,024节长.听上去使人困惑。事上,我提供的接字符串会不完整, ODBC驱动程序会提示用更多信息.接下来ODBC驱动程序会根据所有可能的信息建一个完整的接字符串并将其放入冲区。即使我提供的接字 符串已可以工作了,冲区也会填入更多的属性.个参数的目的是我可以保存完整接字符串来接下来的接做准

  • OutBufferSize pOutConnectString指向的冲区的.

  • pOutConnectStringLength 指向一个双字的指,用来接收由ODBC驱动程序返回的完整接字符串的度。

  • DriverCompletion 一个志用来指示ODBC管理器/驱动程序是否将提示用更多信息.但是,志取决于是否在用本函数时传送了hWnd 参数一个窗口句柄。如果没有,即使该标志被置,ODBC管理器/驱动程序也不会提示用.可能如下:

SQL_DRIVER_PROMPT

ODBC驱动程序提示用户输入信息。驱动程序将利用些信息来接字符串

SQL_DRIVER_COMPLETE

SQL_DRIVER_COMPLETE_REQUIRED

当用提供的接字符串不完全 ODBC驱动程序才会提示用.

SQL_DRIVER_NOPROMPT

ODBC驱动程序将不会提示用.

 
发布了18 篇原创文章 · 获赞 1 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览