c 插入数据oracle

在开发C程序时需要在Oracle中插入数据,我们可以使用OCI技术库和ODBC技术库来实现。OCI技术库是Oracle公司专门为编写C程序提供的技术,而ODBC技术库是Microsoft公司为让不同数据库之间互通而设计的技术。

我们以OCI技术库为例,在C程序中插入数据需要以下步骤:

#include int main(void) { OCIError *error_handle; //存放错误信息 OCISvcCtx *service_handle; //操作Oracle的上下文 OCIStmt *sql_handle; //执行SQL语句 OCIEnv *env_handle; //分配内存和清理内存 OCIDefine *value_handle; //获取select语句的结果 OCIParam *param_handle; //存放输入变量的参数 OCIBind *bind_handle; //变量和参数的绑定 OCIExecute *execute_handle; //执行SQL语句 //...省略创建初始化函数 //连接到Oracle数据库 int status = OCILogon(env_handle, error_handle, &service_handle, "用户名", "密码", "数据库名"); if(status != 0) { printf("连接Oracle数据库失败!\n"); return -1; } //准备执行的SQL语句 char *sql = "insert into student values (:1,:2,:3)"; status = OCIStmtPrepare(sql_handle, error_handle, sql, strlen(sql), OCI_NTV_SYNTAX, OCI_DEFAULT); if(status != 0) { printf("执行SQL语句失败!\n"); return -1; } //绑定参数 char *name = "张三"; int age = 20; char *gender = "男"; status = OCIBindByName(sql_handle, &bind_handle, error_handle, (OraText *) ":1", strlen(":1"), (OraText *) name, strlen(name), SQLT_STR, NULL, NULL, NULL, 0, NULL, OCI_DEFAULT); status = OCIBindByName(sql_handle, &bind_handle, error_handle, (OraText *) ":2", strlen(":2"), (OraText *) &age, sizeof(age), SQLT_INT, NULL, NULL, NULL, 0, NULL, OCI_DEFAULT); status = OCIBindByName(sql_handle, &bind_handle, error_handle, (OraText *) ":3", strlen(":3"), (OraText *) gender, strlen(gender), SQLT_STR, NULL, NULL, NULL, 0, NULL, OCI_DEFAULT); //执行SQL语句 status = OCIStmtExecute(service_handle, sql_handle, error_handle, 1, 0, NULL, NULL, OCI_DEFAULT); if(status != 0) { printf("SQL语句执行失败!\n"); return -1; } //提交事务 status = OCITransCommit(service_handle, error_handle, OCI_DEFAULT); if(status != 0) { printf("提交事务失败!\n"); return -1; } //关闭连接 OCIStmtFree(sql_handle, OCI_DEFAULT); OCILogoff(service_handle, error_handle); return 0; }