您的应用程序必须先建立连接,然后才能执行任何数据库操作。
分配 ODBC 环境。
例如:
SQLHENV env; SQLRETURN retcode; retcode = SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env ); |
声明 ODBC 版本。
通过声明该应用程序遵循 ODBC 版本 3,SQLSTATE 值和某些其它与版本相关的功能都将被设置为适当的行为。例如:
retcode = SQLSetEnvAttr( env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); |
如果需要,可以汇编这些数据源或连接字符串。
根据您的应用程序的情况,您可以对数据源或连接字符串进行硬编码,也可以将它们存储在外部以获得更大的灵活性。
分配 ODBC 连接项。
例如:
retcode = SQLAllocHandle( SQL_HANDLE_DBC, env, &dbc ); |
设置任何必须在连接前设置的连接属性。
有些连接特性必须在建立连接前或建立连接后进行设置,而其它连接特性则既可在之前设置也可在之后设置。SQL_AUTOCOMMIT 特性是一个既可在之前设置也可在之后设置的特性:
retcode = SQLSetConnectAttr( dbc, SQL_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_OFF, 0 ); |
有关详细信息,请参见设置连接属性。
调用 ODBC 连接函数。
例如:
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) { printf( "dbc allocated\n" ); retcode = SQLConnect( dbc, (SQLCHAR*) "SQL Anywhere 11 Demo", SQL_NTS, (SQLCHAR* ) "DBA", SQL_NTS, (SQLCHAR*) "sql", SQL_NTS ); if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){ // successfully connected. |
可在 samples-dir\SQLAnywhere\ODBCConnect\odbcconnect.cpp 中找到完整示例。
SQL_NTS 每个传递到 ODBC 的字符串都有相应的长度。如果长度未知,则可传递 SQL_NTS,表示它是一个结尾标记为空值字符 (\0) 的以空值终止的字符串。
SQLSetConnectAttr 缺省情况下,ODBC 在自动提交模式下工作。通过将 SQL_AUTOCOMMIT 设置为 false 可关闭此模式。
有关详细信息,请参见设置连接属性。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |