void main()
{
OCIEnvCreate(&myenvhp, OCI_THREADED|OCI_OBJECT, (dvoid *)0,
0, 0, 0, (size_t) 0, (dvoid **)0);
OCIHandleAlloc ((dvoid *)myenvhp, (dvoid **)&mysrvhp,
OCI_HTYPE_SERVER, 0, (dvoid **) 0);
OCIHandleAlloc ((dvoid *)myenvhp, (dvoid **)&myerrhp,
OCI_HTYPE_ERROR, 0, (dvoid **) 0); if (OCIServerAttach (mysrvhp, myerrhp, (text *)"orcl",
strlen ("orcl"), OCI_DEFAULT) == OCI_SUCCESS)
MessageBox("1!\n");
else
{
MessageBox("2!\n");
//return -1;
}
OCIHandleAlloc ((dvoid *)myenvhp, (dvoid **)&mysvchp,
OCI_HTYPE_SVCCTX, 0, (dvoid **) 0); OCIAttrSet ((dvoid *)mysvchp, OCI_HTYPE_SVCCTX,
(dvoid *)mysrvhp, (ub4) 0, OCI_ATTR_SERVER, myerrhp); OCIHandleAlloc ((dvoid *)myenvhp, (dvoid **)&myusrhp,
OCI_HTYPE_SESSION, 0, (dvoid **) 0);
OCIAttrSet ((dvoid *)myusrhp, OCI_HTYPE_SESSION,
(dvoid *)"lsqsql", (ub4)strlen("lsqsql"),
OCI_ATTR_USERNAME, myerrhp);
OCIAttrSet ((dvoid *)myusrhp, OCI_HTYPE_SESSION,
(dvoid *)"123456", (ub4)strlen("123456"),
OCI_ATTR_PASSWORD, myerrhp);
if (OCISessionBegin ((OCISvcCtx *) mysvchp, myerrhp, myusrhp,
OCI_CRED_RDBMS, OCI_DEFAULT) == OCI_SUCCESS)
{
MessageBox("3!\n");
}
else
{
MessageBox("4\n");
// return -1;
}
text* create1 = (text*)"create table georaster_table(georid number primary key, type varchar2(32), georaster mdsys.sdo_georaster)";
sb4 status = 0;
OCIAttrSet ( (dvoid *)mysvchp, OCI_HTYPE_SVCCTX,
(dvoid *)myusrhp, (ub4) 0, OCI_ATTR_SESSION, myerrhp);
int tt=CheckErr(myerrhp, OCIHandleAlloc(myenvhp, (void**)&stmthp, OCI_HTYPE_STMT, 0, 0));
int cc=CheckErr(myerrhp, OCIStmtPrepare(stmthp, myerrhp, create1, strlen((char*)create1),
OCI_NTV_SYNTAX, OCI_DEFAULT));
status = OCIStmtExecute(mysvchp, stmthp, myerrhp, 1, 0, NULL, NULL,
OCI_DEFAULT|OCI_COMMIT_ON_SUCCESS|OCI_BATCH_ERRORS); if (status && status != OCI_SUCCESS_WITH_INFO)
{
OCIHandleFree((dvoid*)myenvhp, OCI_HTYPE_ENV); return ;
}}
在执行status=OCIStmtExecute(mysvchp, stmthp, myerrhp, 1, 0, NULL, NULL,
OCI_DEFAULT|OCI_COMMIT_ON_SUCCESS|OCI_BATCH_ERRORS);这句代码之前都没有任何问题,此时status=-1,请教各位大虾,这是什么问题?谢谢了!
解决方案 »
- sql难题:排序,比较统计
- 多表查询问题,并进行统计
- 程序中执行某个sql语句,结果出现“用户请求取消当前的操作”
- 本人急需知道用SYSTEM登陆了数据库后用什么命令能查到其他用户的登陆密码?在SQLPLUS中
- 存储过程种update一批数据,对于处于锁状态的数据需要特殊处理。如何在程序中查出被锁的记录?
- 如何在存储过程中返回cursor?
- 为什么 oracle 8.1.6 无法导出()整个数据库?
- 关于oracle XML的问题
- java连接oracle数据库报错ntly know of service requested in connect descriptor
- 跪求 李兴华老师 2014版的 Oracle笔记!!!!!!(SOS)
- 启动JDeveloper出现问题
- 关于查询时间段的问题
OCI_DEFAULT)呢?
如果status等于-1,把error信息打出来就知道是什么错了。
给一个类似的出错信息伪码:
switch (status)
{
case OCI_SUCCESS:
break;
case OCI_SUCCESS_WITH_INFO:
break;
case OCI_NEED_DATA:
throw DBException(file, line, "Error - OCI_NEED_DATA\n");
break;
case OCI_NO_DATA:
throw DBException(file, line, "Error - OCI_NODATA\n");
break;
case OCI_ERROR:
{
char buf[1024];
(void) o->OCIErrorGet_f((dvoid *)errhp, (ub4) 1, (text *) NULL, &errcode,
(text*)buf, (ub4) sizeof(buf), OCI_HTYPE_ERROR);
throw DBException(file, line, buf);
break;
}
case OCI_INVALID_HANDLE:
throw DBException(file, line, "Error - OCI_INVALID_HANDLE\n");
break;
case OCI_STILL_EXECUTING:
throw DBException(file, line, "Error - OCI_STILL_EXECUTE\n");
break;
case OCI_CONTINUE:
throw DBException(file, line, "Error - OCI_CONTINUE\n");
break;
default:
break;
}