c 插入oracle数据

在C语言中插入Oracle数据是一项必要的技能,不仅可以给我们带来工作或学习上的便捷,而且更是提高自身编程能力的一种方式。那么,本文主要来讲一下如何在C语言中插入Oracle数据,帮助大家更好地进行编程或工作。

我们假设我们有一个学生信息表,包含学号、姓名、性别、年龄、所在班级等基本信息。现在,我们需要将一位新的学生的信息插入到这个表中。那么,以下是一个简单的示例,演示如何完成这个任务。

#include#include#include#includeint main() { OCIEnv *envhp; OCIError *errhp; OCIServer *srvhp; OCISvcCtx *svchp; OCISession *authp; sword status; OCIStmt *stmthp; text *stmt = (text *)"INSERT INTO student (student_no, student_name, student_gender, student_age, class_name) VALUES (:1, :2, :3, :4, :5)"; ub4 p_student_no; char *p_student_name; char p_student_gender; int p_student_age; char *p_class_name; const ub4 MAX_FIELD_WIDTH = 512; p_student_no = 1001; p_student_name = "张三"; p_student_gender = '男'; p_student_age = 20; p_class_name = "计算机科学与技术1班"; text student_no[MAX_FIELD_WIDTH]; text student_name[MAX_FIELD_WIDTH]; text student_gender[MAX_FIELD_WIDTH]; text student_age[MAX_FIELD_WIDTH]; text class_name[MAX_FIELD_WIDTH]; OCIInitialize(OCI_THREADED, (dvoid *)0, (dvoid *(*)(size_t))malloc, (dvoid* (*)(void *))realloc,(void (*)(void *))free ); OCIEnvInit((OCIEnv **)&envhp, OCI_DEFAULT, (size_t)0,(dvoid **)0); OCIHandleAlloc((dvoid *)envhp, (dvoid **)&errhp, OCI_HTYPE_ERROR,(size_t)0, (dvoid **)0); OCIHandleAlloc((dvoid *)envhp, (dvoid **)&srvhp, OCI_HTYPE_SERVER,(size_t)0, (dvoid **)0); OCIServerAttach(srvhp, errhp, (text *)"mydb", strlen((char*)"mydb"), OCI_DEFAULT); OCIHandleAlloc((dvoid *)envhp, (dvoid **)&svchp, OCI_HTYPE_SVCCTX, (size_t)0, (dvoid **)0); status=OCIAttrSet((dvoid *)svchp, (ub4)OCI_HTYPE_SVCCTX, (dvoid *)srvhp,(ub4)0, OCI_ATTR_SERVER, (OCIError *)errhp); OCISessionBegin(svchp, errhp, &authp, OCI_CRED_RDBMS, OCI_DEFAULT); OCIHandleAlloc((dvoid *)envhp, (dvoid **)&stmthp, OCI_HTYPE_STMT, (size_t)0, (dvoid **)0); status = OCIStmtPrepare(stmthp, errhp, (text *)stmt, (ub4)strlen((char *)stmt), (ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT); status=OCIStmtBindByPos(stmthp, &p_student_no, sizeof(&p_student_no), (dvoid *)&student_no[0], MAX_FIELD_WIDTH, SQLT_INT, (dvoid *)0, (ub2 *)0, (ub2 *)0, (ub4)0, (ub4 *)0, OCI_DEFAULT); status=OCIStmtBindByPos(stmthp, &p_student_name, strlen(p_student_name), (dvoid *)&student_name[0], MAX_FIELD_WIDTH, SQLT_STR, (dvoid *)0, (ub2 *)0, (ub2 *)0, (ub4)0, (ub4 *)0, OCI_DEFAULT); status=OCIStmtBindByPos(stmthp, &p_student_gender, sizeof(&p_student_gender), (dvoid *)&student_gender[0], MAX_FIELD_WIDTH, SQLT_CHR, (dvoid *)0, (ub2 *)0, (ub2 *)0, (ub4)0, (ub4 *)0, OCI_DEFAULT); status=OCIStmtBindByPos(stmthp, &p_student_age, sizeof(&p_student_age), (dvoid *)&student_age[0], MAX_FIELD_WIDTH, SQLT_INT, (dvoid *)0, (ub2 *)0, (ub2 *)0, (ub4)0, (ub4 *)0, OCI_DEFAULT); status=OCIStmtBindByPos(stmthp, &p_class_name, strlen(p_class_name), (dvoid *)&class_name[0], MAX_FIELD_WIDTH, SQLT_STR, (dvoid *)0, (ub2 *)0, (ub2 *)0, (ub4)0, (ub4 *)0, OCI_DEFAULT); OCIStmtExecute(svchp, stmthp, errhp, (ub4)1, (ub4)0, (CONST OCISnapshot *)NULL, (OCISnapshot *)NULL, OCI_DEFAULT); OCISessionEnd(svchp, errhp, authp, OCI_DEFAULT); OCIHandleFree((dvoid *)stmthp, OCI_HTYPE_STMT); OCIHandleFree((dvoid *)svchp, OCI_HTYPE_SVCCTX); OCIServerDetach(srvhp, errhp, OCI_DEFAULT); OCIHandleFree((dvoid *)errhp, OCI_HTYPE_ERROR); OCIHandleFree((dvoid *)srvhp, OCI_HTYPE_SERVER); OCIHandleFree((dvoid *)envhp, OCI_HTYPE_ENV); return 0; }