📄 oracle_vc.txt
字号:
#include "operate.h"
OCI_ConnPool *pool = NULL;
typedef struct FIELD_STRUCT
{
char field_name[64];
int field_type;
int field_length;
int field_empty;
char default_value[64];
}*field_def,FIELD_STRUCT; //field_def定义字段格式
typedef struct LINK_FIELD_NODE{
field_def field;
struct LINK_FIELD_NODE *nextLink;
}*list_field,LINK_FIELD_NODE; //list_field 循环链接增加字段列
struct __fields_
{
char *field_name;
char *field_value;
}*field,FIELD_NODE;
typedef struct TABLE_STRUCT
{
char table_name[64];
list_field fieldlist; //表中含有field_def格式的list_field字段列
}*tabledef,TABLE_STRUCT; //tabledef定义表,含字段表示
typedef struct LINK_TABLE_NODE{
tabledef tab;
struct LINK_TABLE_NODE *nextLink;
}*list_table,LINK_TABLE_NODE; //list_table 循环链接增加表
list_table p_link;
int insertTable(tabledef newTab);
int insertColumn(tabledef newTab,field_def newField);
void init_table()
{p_link = (list_table)malloc(sizeof(LINK_TABLE_NODE)); //为p_link分配空间
memset(p_link,0,sizeof(LINK_TABLE_NODE)); //空间赋初值为0
}
tabledef createTable(char* table_name){ //创建定义表空间,并且新表对象字段为空,并插入到表列中
tabledef newTab = (tabledef)malloc(sizeof(TABLE_STRUCT));
strcpy(newTab->table_name,table_name);
newTab->fieldlist = NULL;
insertTable(newTab);
return newTab;}
int insertTable(tabledef newTab) //将定义的表插入到表列中
{list_table curr = p_link; //先定义一个列链临时指针,并赋它指向
p_link
if(!p_link) //如果p_link为空
{init_table(); //为p_link分配空间,并赋值为0
curr = p_link; //再将临时指针赋指向p_link
}
while(curr->tab !=0) //临时指针内不为0,指向下一个链的表节
{curr = curr->nextLink;
}
if(curr) //临时指针为空时
{curr->tab = newTab; //将newTab指给临时指针
curr->nextLink = (list_table)malloc(sizeof(LINK_TABLE_NODE));
//为临时指针的下一动态分配空间,并设初值为0
memset(curr->nextLink,0,sizeof(LINK_TABLE_NODE));
return 0;}
return -1;}
int insertColumn(tabledef newTab,field_def newField)
{list_field currField = newTab->fieldlist; //将临时列指针currField指向newTab表的当前fieldlist
if(!currField) //currField为空时,为newTab表分配列空间
{newTab->fieldlist = (list_field)malloc(sizeof(LINK_FIELD_NODE));
newTab->fieldlist->field = newField;
newTab->fieldlist->nextLink = (list_field)malloc(sizeof(LINK_FIELD_NODE));
newTab->fieldlist->nextLink->field = NULL;
return 0;
}
while(currField->field !=0) //当前列内存在值时,指向下一节
{currField = currField->nextLink;
}
if(currField) //currField不为空时
{currField->field = newField;
currField->nextLink = (list_field)malloc(sizeof(LINK_FIELD_NODE));
memset(currField->nextLink,0,sizeof(LINK_FIELD_NODE));
return 0;
}
return -1;
}
int addColumn(tabledef tab,char *field_name,int type,int field_length,int field_empty,char *default_value)
{field_def newField = (field_def)malloc(sizeof(FIELD_STRUCT)); //分配字段空间,并设值0
memset(newField,0,sizeof(FIELD_STRUCT));
strcpy(newField->field_name,field_name); //将内容传至空间中 newField->field_type = type;
newField->field_empty =field_empty;
newField->field_length = field_length;
if(default_value)
strcpy(newField->default_value,default_value);
return insertColumn(tab,newField); //将传完值的newField插入到tab表列的列链中}
void err_handler(OCI_Error *err)
{
if (OCI_ErrorGetType(err) == OCI_ERR_API)
{
const mtext *sql = OCI_GetSql(OCI_ErrorGetStatement(err));
if (sql != NULL)
{
printf("oci error: %s\n",sql);
}
}
printf("oci error: %s\n",OCI_ErrorGetString(err));
}
//oracle
int initENV()
{
int iRet = 0;
if (!OCI_Initialize(err_handler, NULL, OCI_ENV_DEFAULT | OCI_ENV_THREADED))
return iRet;
pool = OCI_ConnPoolCreate("TEST","test","pass", OCI_SESSION_DEFAULT, 0, MAX_CONN, 1);
if (pool){
printf("OCI_Initialize success!\n");
iRet = 1;
}
return iRet;
}
void closeENV()
{
if (pool)
{
OCI_ConnPoolFree(pool);
OCI_Cleanup();
}
printf("OCI_Connection close success!\n");
}
int main(int argc, char* argv[])
{
initENV();
/* tables x1;
x1.setTableName ("xs1");
x1.insertField ("xuehao","010201");
x1.insertField ("banjihao","0102");
x1.insertField ("xingming","kkk");
x1.insertF();
//唯一键名,唯一键值,要修改的列名,要修改的内容
//x1.updateField ("banjihao","0103","xuehao","010301");
//x1.updateF(); char temp = OCI_GetString(rs, 1);
//x1.deleteField("xingming","aaa");
//x1.deleteF();*/
operate x1;
//x1.creates();
//x1.dropTable();
//x1.selectTableName();
//x1.selectFieldValue("xs1","xuehao","xingming","luoli");
//x1.order("insert(tablename=xs1;key=lx0004,xuehao=010103,banjihao=0101)");
//x1.order("insert(tablename=xskc1;key=la0002,xuehao=010101,banjihao=0101,kechenghao=1002,kcmingcheng=yuwen)");,xingming=aa
//x1.order("insert(tablename=xscj1;key=lh0002,xuehao=010101,banjihao=0101,kechenghao=1001,xvhao=02,yuwen=65,shuxue=60,waiyu=60,zongfen=185)");
//修改的表名 ; 修改条件 ; 所要修改的内容
//x1.order("update(tablename=xs1;key=lx0001;xuehao=010201,banjihao=0102)");
//x1.order("update(tablename=xs1;key=lx0001;xuehao=010201,banjihao=0102,xingming=aa)");
//x1.order("update(tablename=xskc1;key=la0001;xuehao=010202)");
//x1.order("update(tablename=xscj1;key=lh0001;xuehao=010201,banjihao=0101,kechenghao=1003,xvhao=01,yuwen=60,shuxue=60,waiyu=60,zongfen=180)");
//x1.order("update(tablename=xskc1;key=la0001;key=lx0002,xuehao=010102,kechenghao=1002");
//x1.order("update(tablename=xs1;key=ls0001;key=ls0002;xuehao=010102,banjihao=0101,xingming=cc");
//x1.order("delete(tablename=xs1;xuehao=010102;banjihao=0101;xingming=cc)");
//x1.order("delete(tablename=xs1;xingming=aa)");
system("pause");
//x1.order("select(tablename=xs1;key=ls0004)");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -