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

SQL Anywhere 11.0.1 (中文) » UltraLite - C 及 C++ 编程 » 应用程序开发 » 使用 UltraLite C++ API 开发应用程序

 

连接到数据库

UltraLite 应用程序必须先连接到数据库,然后才能对数据库中的数据进行操作。本节将介绍如何连接到 UltraLite 数据库。

可以在 samples-dir\UltraLite\CustDB\ 目录中找到示例代码。

Connection 对象的属性
  • 提交行为    UltraLite C++ API 中没有 AutoCommit 模式。每个事务后面必须跟上一条 Conn->Commit() 语句。请参见管理事务

  • 用户验证   可以使用授予和撤消连接权限的方法更改应用程序的用户 ID 和口令(分别从其缺省值 DBAsql 更改为其它值)。每个数据库最多可以有四个用户 ID。请参见验证用户

  • 同步   通过使用 Connection 对象的方法可将 UltraLite 数据库与统一数据库同步。请参见同步数据

  • 表   使用 Connection 对象的方法可以访问 UltraLite 数据库表。请参见使用 Table API 访问数据

  • 预准备语句   提供了一些用来处理 SQL 语句的执行的方法。请参见使用 SQL 访问数据UltraLite_PreparedStatement 类

连接到 UltraLite 数据库
♦  连接到 UltraLite 数据库
  1. 使用 UltraLite 命名空间。

    使用 UltraLite 命名空间将允许您为 C++ 接口中的类使用简单名称。

    using namespace UltraLite;
  2. 创建并初始化一个 DatabaseManager 对象和一个 UltraLite SQL 通信区 (ULSqlca)。ULSqlca 是一个处理应用程序和数据库之间通信的结构。

    DatabaseManager 对象位于对象层次的根部。对于每个应用程序,只应创建一个 DatabaseManager 对象。通常,最好将 DatabaseManager 对象声明为应用程序范围内的全局对象。

    ULSqlca sqlca;
    sqlca.Initialize();
    DatabaseManager * dbMgr = ULInitDatabaseManager(sqlca);

    如果应用程序不需要 SQL 支持并且直接链接 UltraLite 运行时,则它可以调用 ULInitDatabaseManagerNoSQL 来初始化 ULSqlca。此变量减少了应用程序的大小。

    请参见UltraLite_DatabaseManager_iface 类

  3. 打开与现有数据库的连接,或者,如果指定的数据库文件不存在,创建一个新数据库。请参见OpenConnection 函数

    可以使用初始空数据库部署 UltraLite 应用程序,或者,如果该数据库尚不存在,该应用程序可以创建 UltraLite 数据库。部署初始数据库是最简单的解决方案;否则该应用程序必须调用 ULCreateDatabase 函数创建该数据库并且必须创建应用程序所需的所有表。请参见ULCreateDatabase 函数

    Connection * conn = dbMgr->OpenConnection( sqlca, UL_TEXT("dbf=mydb.udb") );
    if( sqlca.GetSQLCode() == 
      SQLE_ULTRALITE_DATABASE_NOT_FOUND ) {
        printf( "Open failed with sql code: %d.\n" , sqlca.GetSQLCode() );
      }
    }
多线程应用程序

每个连接以及从中创建的所有对象都应该由单个线程使用。如果应用程序需要使用多个线程访问 UltraLite 数据库,则每个线程都需要一个单独的连接。