预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第四:分配 SQL语句的句柄并进行查询: 需要声明一个 SQL语句的句柄( SQLHSTMT),用来存放 SQL语句信息的,调用 SQLAllocHandle(SQL_HANDLE_STMT,V_OD_hdbc,&V_OD_hstmt)来获得这个句柄, V_OD_hstmt就是我们要分配的 SQLHSTMT类型的 SQL语句句柄。 我们的查询语句是: SELECTname,idFROMwebORDERBYid 执行这条查询语句之后,查询结果可能有很多行,但每行只有两列,分别对应 name和 id, 它们的数据类型为 integer和 char*,在 ODBC中的数据类型标识符为 SQL_C_ULONG和 SQL_C_CHAR。我们需要先声明这样的两个变量来存贮查询结果: SQLINTEGERV_OD_id; charV_OD_buffer[200]; 然后我们需要使用 SQLBindCol函数把查询结果和我们定义的变量进行绑定: SQLBindCol(V_OD_hstmt,1,SQL_C_CHAR,&V_OD_buffer,150,&V_OD_err); SQLBindCol(V_OD_hstmt,2,SQL_C_ULONG,&V_OD_id,150,&V_OD_err); 这里的 V_OD_err是用来存放错误信息编号的变量,类型也是 SQLINTEGER。 接下来,我们调用 SQLExecDirect来进行查询: SQLExecDirect(V_OD_hstmt,"SELECTdtname,iduserFROMweborderbyiduser", SQL_NTS); 我们可以用 SQLNumResultCols(V_OD_hstmt,&V_OD_colanz)来获得结果的列数,也可以 用 SQLRowCount(V_OD_hstmt,&V_OD_rowanz)来获得结果的条数,V_OD_colanz和 V_OD_rowanz分别存储相应的结果,类型分别为 SQLSMALLINT和 SQLINTEGER。 在读取结果之前,我们需要调用 SQLFetch(V_OD_hstmt)语句,这个语句可以用来获得第 一条结果也可以用来都下一条,有点像 next的感觉。然后我们就可以在 V_OD_id和 V_OD_buffer里面获得每条记录的结果了。 第五:关于关闭连接和释放句柄 关闭数据库的连接,调用 SQLDisconnect(V_OD_hdbc)就可以了,但在关闭数据库之前需 要先释放 SQL语句的句柄,而且在关闭数据库之后应该释放连接句柄和 ODBC环境句柄, 语句如下(按正常的顺序): SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt); SQLDisconnect(V_OD_hdbc); SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc); SQLFreeHandle(SQL_HANDLE_ENV,V_OD_Env); 第六:关于上述情况中的错误信息处理 我们需要定义两个变量: longV_OD_erg; SQLINTEGERV_OD_err; SQLAllocHandle、 SQLSetEnvAttr、 SQLSetConnectAttr、 SQLConnect、 SQLExecDirect、 SQLNumResultCols和 SQLRowCount的调用结果都可以用 V_OD_erg来存储,V_OD_err可 以获得 SQLBindCol中的错误信息。 第七:获得本机的 DSN信息 我们可以在声明 SQLHENV句柄之后,使用 SQLDataSources函数来获得本机的 DSN信息。 程序如下: voidOD_ListDSN(void) { charl_dsn[100],l_desc[100]; shortintl_len1,l_len2,l_next; l_next=SQL_FETCH_FIRST; while(SQLDataSources(V_OD_Env,l_next,l_dsn,sizeof(l_dsn), &l_len1,l_desc,sizeof(l_desc),&l_len2)==SQL_SUCCESS) { printf("Server=(%s)Beschreibung=(%s)\n",l_dsn,l_desc); l_next=SQL_FETCH_NEXT; } } l_next变量是用来指定我们所要获得的 DSN的类别: SQL_FETCH_FIRST 设定 SQLDataSources()函数找到第一个可用 的数据源(可以是 UserDSN,也可以是 SystermDSN) S