1. 程式人生 > >關於informix的遊標使用得方法和程式碼(unix)

關於informix的遊標使用得方法和程式碼(unix)

       在informix裡,我門要把一個記錄裡得值全部都讀出來,然後在螢幕上把這些記錄值給打印出來得話,我門該如何實現呢,那我們就要使用到遊標得問題,下面是一段使用遊標得簡單程式碼,這是一個ec程式:
#include <stdio.h>
#include <sqlca.h>
#include <sqlda.h>
#include <sqltypes.h>
#include <sqlstype.h>

main()
{
    EXEC SQL INCLUDE SQLCA; /*定義通訊區*/
 
    EXEC SQL BEGIN DECLARE SECTION; /*主變數定義開始*/
    char *string1;
    char str1[10];
    char str2[10];
    EXEC SQL END DECLARE SECTION; /*主變數定義結束*/
   
    //EXEC SQL DROP DATABASE example;
    EXEC SQL CREATE DATABASE example;
    EXEC SQL DATABASE example; /*連線資料庫*/
    if (SQLCODE==0)
    {
        EXEC SQL CREATE TABLE Student
        ( alarm char(6) ,
          sname char(10)
        ); 
    }
   
    //插入資料
    EXEC SQL INSERT INTO Student VALUES("aaaa","bbbb"); 
    EXEC SQL INSERT INTO Student VALUES("dddd","dddd"); 
    EXEC SQL INSERT INTO Student VALUES("cccc","cccc"); 
   
    //設定遊標其中DECLARE是將查詢得結果賦予fet_cur
 EXEC SQL DECLARE fet_cur CURSOR FOR
    SELECT alarm, sname FROM Student;
 EXEC SQL OPEN fet_cur;
 
 printf("SQLCODE=%d/n", SQLCODE);

  while(1)
 {
  memset(str1, 0, sizeof(str1));
  memset(str2, 0, sizeof(str2));
  
        //把記錄遊標fet_cir移到一個新位置,憑且把記錄值賦予變數str1和str2
        EXEC SQL FETCH fet_cur INTO :str1,:str2;
     if (SQLCODE !=0)
  {
      printf("LINE=%d, SQLCODE=%d", __LINE__, SQLCODE);
   break;
  }
  //列印記錄結果
     printf("str1=%s, str2=%s/n",str1,str2); 
 }
 
 //關閉遊標和資料庫
 EXEC SQL CLOSE fet_cur;
 EXEC SQL CLOSE DATABASE;
    /*
        EXEC SQL SELECT first 1 alarm,sname
          INTO :str1,:str2 FROM Student;
        if (SQLCODE !=0)
     {
        printf("LINE=%d, SQLCODE=%d", __LINE__, SQLCODE);
        return(-1);
        }
        printf("str1=%s, str2=%s/n",str1,str2); 
    */
    return(0);
}
其結果是在螢幕上打印出從informix裡讀出得資料:
str1=aaaa     , str2=bbbb
str1=dddd     , str2=dddd
str1=cccc     , str2=cccc

希望這段小小程式碼能棒得上你得忙,我得QQ:29921374 歡迎交流