嵌入sql
為了更好的理解嵌入sql,本節利用一個具體例子來說明。嵌入sql允許程序連接數據庫并且包括sql代碼到程序中,這樣在程序中就可以對數據庫進行使用、操作以及處理數據等等。以下是用c語言編寫的使用嵌入sql的例程,它將打印一個報告;這個程序必須在普通的編譯之前先預編譯sql語句。嵌入sql對于不同系統是不一樣的,所以在不同的系統中對以下的程序稍作修改,特別是變量的聲明以及過程記錄等。在嵌入sql時,考慮網絡、數據庫管理系統、操作系統是相當重要的。
以下是詳細的代碼:
#include <stdio.h>
/* 以下這部分是聲明主機變量,它將使用于程序中*/
exec sql begin declare section;
int buyerid;
char firstname[100], lastname[100], item[100];
exec sql end declare section;
/* 以下包括sqlca變量,它可以用來進行錯誤檢查 */
exec sql include sqlca;
main() {
/* 以下連接數據庫*/
exec sql connect userid/password;
/* 以下是連接數據庫并檢查是否有錯誤產生t */ if(sqlca.sqlcode) {
printf(printer, "error connecting to database server./n");
exit();
}
printf("connected to database server./n");
/* 下面聲明一個 "cursor"。它將在查詢結果多于一行的時候使用*/
exec sql declare itemcursor cursor for
select item, buyerid
from antiques
order by item;
exec sql open itemcursor;
/* 你可以在這里還可以加入另外一些錯誤檢查的內容,這里就省略了*/
/* 當這個cursor沒有數據, sqlcode將被產生以允許我們退出循環。這里注意,為了簡單起見,我們使程序遇到錯誤的時候就退出任何的sqlcode。*/
exec sql fetch itemcursor into :item, :buyerid;
while(!sqlca.sqlcode) {
exec sql update antiques
set price = price + 5
where item = :item and buyerid = :buyerid;
exec sql select ownerfirstname, ownerlastname
into :firstname, :lastname
from antiqueowners
where buyerid = :buyerid;
printf("%25s %25s %25s", firstname, lastname, item);
exec sql fetch itemcursor into :item, :buyerid;
}
/* 關閉cursor,提交變化并退出程序。*/
exec sql close datacursor;
exec sql commit release;
exit();
}
新聞熱點
疑難解答