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

📄 oracle_vc.txt

📁 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 + -