C Oracle 增刪改查指南
在日常開發(fā)中,C語言與Oracle數(shù)據(jù)庫的結合已經成為了很普遍的做法。而其中最基本的操作無非就是增刪改查,接下來我們就來詳細了解這幾個操作實現(xiàn)的方法。
1.查詢(select)
在Oracle中使用C語言查詢數(shù)據(jù)需要使用OCI接口,以下是一個代碼示例,通過執(zhí)行SQL語句進行查詢:
// Initialize environment variables OCIEnvCreate(&env, OCI_THREADED | OCI_OBJECT, 0, 0, 0, 0, 0, 0); // Allocate and initialize OCI handles for session, error, and statement OCIHandleAlloc(env, (void **)&err, OCI_HTYPE_ERROR, 0, 0); OCIHandleAlloc(env, (void **)&srv_hndl, OCI_HTYPE_SERVER, 0, 0); OCIHandleAlloc(env, (void **)&svc_hndl, OCI_HTYPE_SVCCTX, 0, 0); OCIHandleAlloc(env, (void **)&session_hndl, OCI_HTYPE_SESSION, 0, 0); OCIHandleAlloc(env, (void **)&stm_hndl, OCI_HTYPE_STMT, 0, 0); // Connect to the database OCIAttrSet(srv_hndl, OCI_HTYPE_SERVER, "dbname", strlen("dbname"), OCI_ATTR_SERVER_NAME, err); OCIAttrSet(session_hndl, OCI_HTYPE_SESSION, "username", strlen("username"), OCI_ATTR_USERNAME, err); OCIAttrSet(session_hndl, OCI_HTYPE_SESSION, "password", strlen("password"), OCI_ATTR_PASSWORD, err); OCISessionBegin(svc_hndl, err, session_hndl, OCI_CRED_RDBMS, OCI_DEFAULT); // Execute SQL and fetch data OCIStmtPrepare(stm_hndl, err, "select * from my_table", strlen("select * from my_table"), OCI_NTV_SYNTAX, OCI_DEFAULT); OCIStmtExecute(svc_hndl, stm_hndl, err, 0, 0, 0, 0, OCI_DEFAULT); while (OCIStmtFetch(stm_hndl, err, 1, OCI_FETCH_NEXT, OCI_DEFAULT) != OCI_NO_DATA) { // Process data }
2.插入(insert)
同樣地,在Oracle中使用C語言插入數(shù)據(jù)也需要使用OCI接口,以下是一個代碼示例:
OCIStmtPrepare(stm_hndl, err, "insert into my_table (col1, col2) values (:1, :2)", strlen("insert into my_table (col1, col2) values (:1, :2)"), OCI_NTV_SYNTAX, OCI_DEFAULT); OCIStmtBindByPos(stm_hndl, &bind1p, err, 1, &value1, sizeof(value1), SQLT_INT, 0, 0, 0); OCIStmtBindByPos(stm_hndl, &bind2p, err, 2, value2_buf, strlen(value2_buf), SQLT_STR, 0, 0, 0); OCIStmtExecute(svc_hndl, stm_hndl, err, 1, 0, 0, 0, OCI_DEFAULT);
3.更新(update)
更新數(shù)據(jù)也需要使用OCI接口,以下是一個代碼示例:
OCIStmtPrepare(stm_hndl, err, "update my_table set col1 = :1 where col2 = :2", strlen("update my_table set col1 = :1 where col2 = :2"), OCI_NTV_SYNTAX, OCI_DEFAULT); OCIStmtBindByPos(stm_hndl, &bind1p, err, 1, &value1, sizeof(value1), SQLT_INT, 0, 0, 0); OCIStmtBindByPos(stm_hndl, &bind2p, err, 2, value2_buf, strlen(value2_buf), SQLT_STR, 0, 0, 0); OCIStmtExecute(svc_hndl, stm_hndl, err, 1, 0, 0, 0, OCI_DEFAULT);
4.刪除(delete)
刪除數(shù)據(jù)同樣需要使用OCI接口,以下是一個代碼示例:
OCIStmtPrepare(stm_hndl, err, "delete from my_table where col1 = :1", strlen("delete from my_table where col1 = :1"), OCI_NTV_SYNTAX, OCI_DEFAULT); OCIStmtBindByPos(stm_hndl, &bind1p, err, 1, &value1, sizeof(value1), SQLT_INT, 0, 0, 0); OCIStmtExecute(svc_hndl, stm_hndl, err, 1, 0, 0, 0, OCI_DEFAULT);
總結
通過以上的代碼示例可以看到,通過OCI接口可以方便地在C語言中實現(xiàn)Oracle數(shù)據(jù)庫的增刪改查操作。這些操作都是數(shù)據(jù)庫編程中最常用的操作,掌握好了OCI接口的使用,才能在實際項目中得心應手。