⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oradbutil.h

📁 使用Pro*C封装的访问数据库的源码
💻 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的动态方法四的数据库存取程序的封装
   程序员可以方便调用该文件所提供的execQuery(), execUpdate()方法,进行数据库操作
   而不必掌握复杂的Pro*C语句
   如果使用此方法则其它开发人员不需要编写.pc文件,而直接写.c文件即可
注意:目前数据库的连接为了测试使用,如果你的程序是tuxeo service可以去掉数据库连接和关闭的语句
*********************************************************************/

/*数据库结果集的结构定义*/
struct _DataSet {
  long lRows;		/*结果集包含的行数*/
  int iCols;		/*结果集每行的字段数*/
  char**  fields;	/*数据库中对应的各个字段的名字*/
  char*** content;	/*结果集的各个字段值,如第一行的第二个字段,为 content[0][1] */
};

typedef struct _DataSet DataSet;

/* Maximum number of select-list items or bind variables.
定义选择表项和绑定变量最大的个数*/
#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

/*执行数据库的增、删、改操作
 *参数 dySql 要执行的sql语句
 *返回 0 成功 -1 失败
*/
int execUpdate(char* dySql);

/*执行数据库的增、删、改操作
 *参数 querySQL 要执行的查询sql语句
 *参数 retDataSet 查询所得到的结果集
 *参数 errMsg 出错时候的错误信息
 *返回 0 成功 -1 失败
 *调用方法:
 *  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);

/*对结果集进行打印显示
 *参数 retDataSet 查询所得到的结果集
 *返回
*/
void printDataSet(DataSet ds);

/*对查询得到的结果集进行释放处理
 *参数 retDataSet 查询所得到的结果集
 *返回
*/
void freeDataSet(DataSet ds );

/*根据字段的名字,得到其在DataSet中的列数
 *参数 ds	结果集
 *参数 lRow	要取值的行号
 *参数 colName	要取值的列名称(大小写不敏感)
 *返回 该列名对应第几列(从0开始),如果列未发现或其它异常,则返回-1
*/
int getColNoByName(DataSet ds, char* colName);

/*从DataSet中读取第lRow行的,字段名为colName的值
 *参数 ds	结果集
 *参数 lRow	要取值的行号
 *参数 colName	要取值的列名称(大小写不敏感)
 *返回 所取的该行记录的该列值,如果有错误,则为NULL
 *注意1:! 返回值是一个指针,当DataSet被释放时,它也释放,做以你要做
 *保存时,请用strcpy进行保存。
 *注意2:! 建议使用ds.content[lRow][iCol]来读取单元内容,这样即简单又迅速
*/
char* elementAt(DataSet ds, long lRow, char* colName);

/*对DataSet中指定lRow行,指定列的字段进行重新赋值
 *参数 ds	结果集
 *参数 lRow	要取值的行号
 *参数 iCol	要取值的列号
 *参数 value	新的值
 *返回 0设置成功 -1失败,可能是该行该列的值不存在
 *注意:! 此方法不推荐使用,因为DataSet只是一个临时的内存控件,在短暂的时间
 *内只作读取,不建议进行重新赋值操作,如必要,可以将其拷贝到其它实例中进行操作。
*/
int setElementAt(DataSet ds, long lRow, int iCol, char* value);

/*
test.c 文件是对上述方法调用的测试函数,源文件在/boss/ibas/temp/wk/test.c
请参看。
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -