?? oradbutil.h
字號:
/***************************************
* *
* Proc*C Easy Pack *
* *
* Written by *
* WiseKing(WangQiang) *
* Unicom-BU *
* BeiJing LongShine Info(W)2003 *
* *
* Important: to use this source don't *
* remove these comments *
* *
* *
* Version 1.0Beta Freeware *
/***************************************
/******************************************************************
Email:walking98@sina.com
MODIFY TIME: 2003-12
PROGRAM NAME: OraDBUtil.pc
程序說明:這個程序是ORACLE的動態(tài)方法四的數(shù)據(jù)庫存取程序的封裝
程序員可以方便調(diào)用該文件所提供的execQuery(), execUpdate()方法,進(jìn)行數(shù)據(jù)庫操作
而不必掌握復(fù)雜的Pro*C語句
如果使用此方法則其它開發(fā)人員不需要編寫.pc文件,而直接寫.c文件即可
注意:目前數(shù)據(jù)庫的連接為了測試使用,如果你的程序是tuxeo service可以去掉數(shù)據(jù)庫連接和關(guān)閉的語句
*********************************************************************/
/*數(shù)據(jù)庫結(jié)果集的結(jié)構(gòu)定義*/
struct _DataSet {
long lRows; /*結(jié)果集包含的行數(shù)*/
int iCols; /*結(jié)果集每行的字段數(shù)*/
char** fields; /*數(shù)據(jù)庫中對應(yīng)的各個字段的名字*/
char*** content; /*結(jié)果集的各個字段值,如第一行的第二個字段,為 content[0][1] */
};
typedef struct _DataSet DataSet;
/* Maximum number of select-list items or bind variables.
定義選擇表項和綁定變量最大的個數(shù)*/
#define MAX_ITEMS 40
/* Maximum lengths of the _names_ of the
select-list items or indicator variables.
定義選擇表項變量名和指示器變量名的最大長度。*/
#define MAX_VNAME_LEN 30
#define MAX_INAME_LEN 30
/*執(zhí)行數(shù)據(jù)庫的增、刪、改操作
*參數(shù) dySql 要執(zhí)行的sql語句
*返回 0 成功 -1 失敗
*/
int execUpdate(char* dySql);
/*執(zhí)行數(shù)據(jù)庫的增、刪、改操作
*參數(shù) querySQL 要執(zhí)行的查詢sql語句
*參數(shù) retDataSet 查詢所得到的結(jié)果集
*參數(shù) errMsg 出錯時候的錯誤信息
*返回 0 成功 -1 失敗
*調(diào)用方法:
* DataSet ds;
* char errMsg[1024];
* char* querySQL = "SELECT * FROM scott.emp";
* if( execQuery(querySQL, &ds, errMsg )!= 0 )
* sprintf( "SQL ERROR = %s\n", errMsg );
*/
int execQuery(char* querySQL, DataSet *retDataSet, char* errMsg);
/*對結(jié)果集進(jìn)行打印顯示
*參數(shù) retDataSet 查詢所得到的結(jié)果集
*返回
*/
void printDataSet(DataSet ds);
/*對查詢得到的結(jié)果集進(jìn)行釋放處理
*參數(shù) retDataSet 查詢所得到的結(jié)果集
*返回
*/
void freeDataSet(DataSet ds );
/*根據(jù)字段的名字,得到其在DataSet中的列數(shù)
*參數(shù) ds 結(jié)果集
*參數(shù) lRow 要取值的行號
*參數(shù) colName 要取值的列名稱(大小寫不敏感)
*返回 該列名對應(yīng)第幾列(從0開始),如果列未發(fā)現(xiàn)或其它異常,則返回-1
*/
int getColNoByName(DataSet ds, char* colName);
/*從DataSet中讀取第lRow行的,字段名為colName的值
*參數(shù) ds 結(jié)果集
*參數(shù) lRow 要取值的行號
*參數(shù) colName 要取值的列名稱(大小寫不敏感)
*返回 所取的該行記錄的該列值,如果有錯誤,則為NULL
*注意1:! 返回值是一個指針,當(dāng)DataSet被釋放時,它也釋放,做以你要做
*保存時,請用strcpy進(jìn)行保存。
*注意2:! 建議使用ds.content[lRow][iCol]來讀取單元內(nèi)容,這樣即簡單又迅速
*/
char* elementAt(DataSet ds, long lRow, char* colName);
/*對DataSet中指定lRow行,指定列的字段進(jìn)行重新賦值
*參數(shù) ds 結(jié)果集
*參數(shù) lRow 要取值的行號
*參數(shù) iCol 要取值的列號
*參數(shù) value 新的值
*返回 0設(shè)置成功 -1失敗,可能是該行該列的值不存在
*注意:! 此方法不推薦使用,因為DataSet只是一個臨時的內(nèi)存控件,在短暫的時間
*內(nèi)只作讀取,不建議進(jìn)行重新賦值操作,如必要,可以將其拷貝到其它實例中進(jìn)行操作。
*/
int setElementAt(DataSet ds, long lRow, int iCol, char* value);
/*
test.c 文件是對上述方法調(diào)用的測試函數(shù),源文件在/boss/ibas/temp/wk/test.c
請參看。
*/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -