Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 编程 » SQL Anywhere 数据访问 API » SQL Anywhere ODBC API » 选择 ODBC 连接函数

 

建立连接

您的应用程序必须先建立连接,然后才能执行任何数据库操作。

♦  建立 ODBC 连接:
  1. 分配 ODBC 环境。

    例如:

    SQLHENV   env;
    SQLRETURN retcode;
    retcode = SQLAllocHandle( SQL_HANDLE_ENV,
      SQL_NULL_HANDLE, &env );
  2. 声明 ODBC 版本。

    通过声明该应用程序遵循 ODBC 版本 3,SQLSTATE 值和某些其它与版本相关的功能都将被设置为适当的行为。例如:

    retcode = SQLSetEnvAttr( env,
      SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
  3. 如果需要,可以汇编这些数据源或连接字符串。

    根据您的应用程序的情况,您可以对数据源或连接字符串进行硬编码,也可以将它们存储在外部以获得更大的灵活性。

  4. 分配 ODBC 连接项。

    例如:

    retcode = SQLAllocHandle( SQL_HANDLE_DBC, env, &dbc );
  5. 设置任何必须在连接前设置的连接属性。

    有些连接特性必须在建立连接前或建立连接后进行设置,而其它连接特性则既可在之前设置也可在之后设置。SQL_AUTOCOMMIT 特性是一个既可在之前设置也可在之后设置的特性:

    retcode = SQLSetConnectAttr( dbc,
       SQL_AUTOCOMMIT, 
       (SQLPOINTER)SQL_AUTOCOMMIT_OFF, 0 );

    有关详细信息,请参见设置连接属性

  6. 调用 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 可关闭此模式。

    有关详细信息,请参见设置连接属性


设置连接属性
获取连接属性
ODBC 应用程序中的线程和连接