汇编教程:连接数据源
2008-10-14 09:35:15 来源:WEB开发网SQLConnect的语法如下:
SQLConnect proto ConnectionHandle:DWORD pDSN:DWORD, DSNLength:DWORD, pUserName:DWORD, NameLength:DWORD, pPassword:DWORD, PasswordLength:DWORD
ConnectionHandle. 要使用的连接句柄.
pDSN. 指向DSN的指针.
DSNLength. DSN的长度
pUserName. 指向用户名的指针
NameLength. 用户名的长度
pPassword. 指向该用户名所使用密码的指针
PasswordLength. 密码的长度
在最小情况下, SQLConnect 需要连接句柄,DSN和DSN的长度。如果数据源不需要的话,用户名和密码就不是必须的.函数的返回值与SQLAllocHandle的返回值相同.
假设我们的系统中有一个叫做"Sales" 的DSN并且我们想连接这个数据源.我们可以这样做:
.data
DSN db "Sales",0
.code
......
invoke SQLConnect, hConn, addr DSN, sizeof DSN,0,0,0,0
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驱动程序将不会提示用户.
例子:
.data
strConnect db "DBQ=c:\data\test.mdb;DRIVER={Microsoft Access Driver (*.mdb)};",0
.data?
buffer db 1024 dup(?)
OutStringLength dd ?
.code
.....
invoke SQLDriverConnect, hConn, hWnd, addr strConnect, sizeof strConnect, addr buffer, sizeof buffer, addr OutBufferLength, SQL_DRIVER_COMPLETE
断开与数据源的连接
在连接顺利完成后,我们就可以对数据源进行查询及其他操作.这些将在下一节讨论.现在假设我们已完成了对数据源的操作,就可以通过调用SQLDisconnect来断开与它的连接. 这个函数非常简单(就象那悲伤而冷酷的现实:毁灭总比创造容易的多).它只需要一个参数:连接句柄。
invoke SQLDisconnect, hConn
释放连接与环境句柄
在顺利地断开连接后,我们现在可以调用SQLFreeHandle函数来销毁连接句柄和环境句柄. 这是由ODBC 3.x提供的新函数.它替代了SQLFreeConnect, SQLFreeEnv及SQLFreeStmt函数. SQLFreeHandle语法如下:
SQLFreeHandle proto HandleType:DWORD, Handle:DWORD
HandleType 标识要销毁句柄的类别的常数.可能值与 SQLAllocHandle中相同
Handle要销毁的句柄.
For example:
invoke SQLFreeHandle, SQL_HANDLE_DBC, hConn
invoke SQLFreeHandle, SQL_HANDLE_ENV, hEnv
更多精彩
赞助商链接