openGauss ODBC主要接口
Vastbase G100 ODBC 驱动由具有建立和管理与Vastbase G100 数据库连接、执行SQL 语句和对结果集进行储存管理的若干功能类组成。
SQLSetEnvAttr
设置控制环境各方面的属性,环境属性如下所示:
SQL_ATTR_ODBC_VERSION | 指定ODBC版本。 |
SQL_CONNECTION_POOLING | 连接池属性。 |
SQL_OUTPUT_NTS | 指明驱动器返回字符串的形式。 |
示例:
SQLSetEnvAttr(V_OD_Env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
SQLAllocHandle
分配环境、连接、语句或描述符的句柄,它替代了ODBC 2.x函数SQLAllocEnv、SQLAllocConnect及SQLAllocStmt。
示例:
V_OD_erg = SQLAllocHandle(SQL_HANDLE_DBC, V_OD_Env, &V_OD_hdbc);
SQLSetConnectAttr
设置控制连接各方面的属性,下面列出一些连接属性和取值,详细信息请参考https://msdn.microsoft.com/en-us/library/windows/desktop/ms714177(v=vs.85).aspx
连接属性 | 取值 |
SQL_ATTR_ACCESS_MODE | 用于表明是否需要连接来支持会导致更新的SQL语句。 SQL_MODE_READ_ONLY SQL_MODE_READ_WRITE |
SQL_ATTR_ASYNC_ENABLE | 指定连接相关的语句中的函数调用是否异步执行。 SQL_ASYNC_ENABLE_OFF SQL_ASYNC_ENABLE_ON |
SQL_ATTR_AUTOCOMMIT | 自动提交,还是手动提交。 SQL_AUTOCOMMIT_OFF SQL_AUTOCOMMIT_ON |
SQL_ATTR_CONNECTION_DEAD | 连接的状态。 SQL_CD_TRUE(连接已丢失) SQL_CD_FALSE(连接仍活跃) |
SQL_ATTR_LOGIN_TIMEOUT | 保存秒数的SQLUINTEGER 类型变量,传入空指针则关闭该功能。 |
SQL_ATTR_ODBC_CURSORS | 用于驱动管理器使用ODBC游标。 SQL_CUR_USE_IF_NEEDED SQL_CUR_USE_ODBC SQL_CUR_USE_DRIVER |
示例:
SQLSetConnectAttr(V_OD_hdbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, 0);
SQLConnect
在驱动程序和数据源之间建立连接。连接上数据源之后,可以通过连接句柄访问到所有有关连接数据源的信息,包括程序运行状态、事务处理状态和错误信息。
示例
V_OD_erg = SQLConnect(V_OD_hdbc, (SQLCHAR*) "Test", SQL_NTS, (SQLCHAR*) "yuntu", SQL_NTS, (SQLCHAR*) "Ttest@123", SQL_NTS); if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) { printf("Error SQLConnect %d\n",V_OD_erg); SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); exit(0); }
SQLSetStmtAttr
设置相关语句的属性。
示例:
SQLSetStmtAttr(V_OD_hstmt,SQL_ATTR_QUERY_TIMEOUT,(SQLPOINTER *)3,0);
SQLExecDirect
使用参数的当前值,执行一条准备好的语句。对于一次只执行一条SQL语句,SQLExecDirect是最快的执行方式。
示例:
SQLExecDirect(V_OD_hstmt,"drop table IF EXISTS test_stu",SQL_NTS);
SQLPrepare
准备一个将要进行的SQL语句。
示例:
SQLPrepare(V_OD_hstmt,"insert into test_stu values(?)",SQL_NTS);
SQLBindParameter
将一条SQL语句中的一个参数标志和一个缓冲区绑定起来。
示例:
SQLBindParameter(V_OD_hstmt,1,SQL_PARAM_INPUT,SQL_C_SLONG,SQL_INTEGER,0,0, &value,0,NULL);
SQLExecute
如果语句中存在参数标记的话,SQLExecute函数使用参数标记参数的当前值,执行一条准备好的SQL语句。
示例:
SQLExecute(V_OD_hstmt);
SQLColAttribute
返回结果集中一列的描述符信息。
示例:
SQLColAttribute(V_OD_hstmt,1,SQL_DESC_NAME,desc_name,100,NULL,NULL); printf("SQLColAtrribute %s\n",desc_name);
SQLFetch
从结果集中取下一个行集的数据,并返回所有被绑定列的数据。
示例:
ret = SQLFetch(V_OD_hstmt);
SQLGetData
SQLGetData返回结果集中某一列的数据。可以多次调用它来部分地检索不定长度的数据。
示例:
ret = SQLGetData(V_OD_hstmt, 1, SQL_C_CHAR, buf, sizeof(buf), &ind);
SQLFreeHandle
释放与指定环境、连接、语句或描述符相关联的资源,它替代了ODBC 2.x函数SQLFreeEnv、SQLFreeConnect及SQLFreeStmt。
示例:
SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
SQLDisconnect
关闭一个与特定连接句柄相关的连接。
示例:
SQLDisconnect(V_OD_hdbc);