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++ 编程 » 应用程序开发 » 使用嵌入式 SQL 开发应用程序

 

验证用户

UltraLite 数据库都是用缺省用户 ID (DBA) 和缺省口令 (sql) 创建的;必须首先以该初始用户的身份进行连接。必须从现有连接添加新用户。

用户 ID 不能更改;但可添加新用户 ID,然后再删除现有的用户 ID。每个 UltraLite 数据库最多允许四个用户 ID。

在 Palm OS 上,如果希望在用户每次从其它应用程序返回原应用程序时都对用户进行验证,则必须在 PilotMain 例程中包括要求输入用户和口令信息的提示。

用户验证示例

samples-dir\UltraLite\esqlauth 目录中提供了一个完整的示例。以下代码从 samples-dir\UltraLite\esqlauth\sample.sqc 中获取。

//embedded SQL
app() {
   ...
/* Declare fields */
   EXEC SQL BEGIN DECLARE SECTION;
      char uid[31];
      char pwd[31];
   EXEC SQL END DECLARE SECTION;
   db_init( &sqlca );
   ...
   EXEC SQL CONNECT "DBA" IDENTIFIED BY "sql";
   if( SQLCODE == SQLE_NOERROR ) {
      printf("Enter new user ID and password\n" );
      scanf( "%s %s", uid, pwd );
      ULGrantConnectTo( &sqlca,
         UL_TEXT( uid ), UL_TEXT( pwd ) );
      if( SQLCODE == SQLE_NOERROR ) {
         // new user added: remove DBA
         ULRevokeConnectFrom( &sqlca, UL_TEXT("DBA") );
      }
      EXEC SQL DISCONNECT;
   }
   // Prompt for password
    printf("Enter user ID and password\n" );
    scanf( "%s %s", uid, pwd );
    EXEC SQL CONNECT :uid IDENTIFIED BY :pwd;

该代码执行以下任务:

  1. 通过调用 db_init 启动数据库功能。

  2. 尝试使用缺省用户 ID 和口令进行连接。

  3. 如果连接尝试成功,则添加新用户。

  4. 如果成功添加了新用户,则从 UltraLite 数据库中删除 DBA 用户。

  5. 断开连接。这样就向数据库中添加了已更新的用户 ID 和口令。

  6. 使用已更新的用户 ID 和口令进行连接。

请参见: