利用OCI添加数据

利用OCI添加数据
在利用了OCI进行数据查询以后,想试试看插入数据是否顺利,所以就做了以下的代码:

 1         sprintf( szSqlStr, " %s " " INSERT INTO EMP VALUES (:EMPNO,:ENAME,:AGE,:SEX) " );
 2 
 3          cdr CdrValue;
 4          strcpy(CdrValue.empno, " 031231304 " );
 5          strcpy(CdrValue.ename, " 小居 " );
 6          strcpy(CdrValue.sex, " " );
 7          CdrValue.age = 20 ;
 8 
 9          OCIStmtPrepare(m_stmthp,m_errhp,(text  * )szSqlStr,strlen(szSqlStr),OCI_NTV_SYNTAX,OCI_DEFAULT);
10 
11          OCIBindByPos(m_stmthp,  & bndp, m_errhp,  1 , (dvoid  * )CdrValue.empno, (sb4) sizeof (CdrValue.empno), SQLT_STR, NULL, NULL, NULL,  0 , NULL, (ub4)OCI_DEFAULT);
12          OCIBindByPos(m_stmthp,  & bndp, m_errhp,  2 , (dvoid  * )CdrValue.ename, (sb4) sizeof (CdrValue.ename), SQLT_STR, NULL, NULL, NULL,  0 , NULL, (ub4)OCI_DEFAULT);
13          OCIBindByPos(m_stmthp,  & bndp, m_errhp,  4 , (dvoid  * )CdrValue.sex, (sb4) sizeof (CdrValue.sex), SQLT_STR, NULL, NULL, NULL,  0 , NULL, (ub4)OCI_DEFAULT);
14          OCIBindByPos(m_stmthp,  & bndp, m_errhp,  3 , (dvoid  * ) & CdrValue.age, (sb4) sizeof (CdrValue.age), SQLT_INT, NULL, NULL, NULL,  0 , NULL, (ub4)OCI_DEFAULT);
15        
16          OCIStmtExecute( m_svchp, m_stmthp, m_errhp, (ub4) 1 , (ub4) 0 ,(OCISnapshot  * )NULL,(OCISnapshot  * )NULL, (ub4)OCI_COMMIT_ON_SUCCESS); 

一开始总是出现不能访问一段内存地址,后来才发现 & CdrValue.age没有加"&",懊恼死了,花费了我大量的时间,下次一定小心


你可能感兴趣的:(利用OCI添加数据)