關於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 歡迎交流