c oracle更新
关于C语言更新Oracle数据库,常见的操作有插入、删除、查询、更新等。其中更新操作是我们经常需要用到的,下面就着重介绍C语言如何更新Oracle。
更新操作是针对某个表中已有的数据进行修改。假设我们有一个表格叫做“employee”,其中包含员工的姓名、编号、工资和所属部门等信息。现在要对一个员工的工资进行修改,以下是C语言连接Oracle数据库的代码:
#include#include#includevoid checkerr(OCIError *errhp, sword status) { text errbuf[512]; sb4 errcode; if (status != OCI_SUCCESS) { OCIErrorGet((dvoid*)errhp, (ub4)1, (text*)NULL, &errcode, errbuf, (ub4)sizeof(errbuf), OCI_HTYPE_ERROR); printf("Error: %d, %s\n", errcode, errbuf); exit(1); } } int main() { OCIEnv *envhp; OCIError *errhp; OCIServer *srvhp; OCISession *usrhp; OCIStmt *stmthp; OCIDefine *defhp; OCIBind *bndhp; sword status; text *username = (text *) "username"; text *password = (text *) "password"; text *database = (text *) "database"; text *sql_stmt = (text *) "UPDATE employee SET salary = 5000 WHERE emp_name = 'Tom'"; status = OCIEnvCreate(&envhp, OCI_THREADED|OCI_OBJECT, NULL, NULL, NULL, NULL, 0, NULL); checkerr(NULL, status); status = OCIHandleAlloc((dvoid *)envhp, (dvoid **)&errhp, OCI_HTYPE_ERROR, 0, NULL); checkerr(errhp, status); status = OCIHandleAlloc((dvoid *)envhp, (dvoid **)&srvhp, OCI_HTYPE_SERVER, 0, NULL); checkerr(errhp, status); status = OCIHandleAlloc((dvoid *)envhp, (dvoid **)&usrhp, OCI_HTYPE_SESSION, 0, NULL); checkerr(errhp, status); status = OCIHandleAlloc((dvoid *)envhp, (dvoid **)&stmthp, OCI_HTYPE_STMT, 0, NULL); checkerr(errhp, status); status = OCILogon(envhp, errhp, &srvhp, username, strlen(username), password, strlen(password), database, strlen(database)); checkerr(errhp, status); status = OCIStmtPrepare(stmthp, errhp, sql_stmt, strlen((char *)sql_stmt), OCI_NTV_SYNTAX, OCI_DEFAULT); checkerr(errhp, status); status = OCIStmtExecute(usrhp, stmthp, errhp, 1, 0, NULL, NULL, OCI_DEFAULT); checkerr(errhp, status); status = OCITransCommit(srvhp, errhp, OCI_DEFAULT); checkerr(errhp, status); OCIHandleFree((dvoid *)envhp, OCI_HTYPE_SERVER); OCIHandleFree((dvoid *)envhp, OCI_HTYPE_SESSION); OCIHandleFree((dvoid *)envhp, OCI_HTYPE_STMT); OCIHandleFree((dvoid *)envhp, OCI_HTYPE_ERROR); OCIHandleFree((dvoid *)envhp, OCI_HTYPE_ENV); return 0; }