我正在处理一个应用程序,如果给出了这个错误消息,它就会被忽略:
OracleOraORA-24338:语句句柄未执行
我的比较代码如下:
char Sqlstate[10];
long NativeErrorPtr;
char MessageText[1024];
long BufferLength=1024;
long TextLengthPtr;
SQLGetDiagRec(SQL_HANDLE_STMT,sqlc.g_hstmt,1,(SQLCHAR *) Sqlstate,(SQLINTEGER *) &NativeErrorPtr,
(SQLCHAR *) MessageText,(SQLSMALLINT) BufferLength,(SQLSMALLINT *) &TextLengthPtr);
success=false;
char* msg = MessageText;
char* oracleMsg = "[Oracle][ODBC][Ora]ORA-24338: statement handle not executed";
int i = strcmp(msg, oracleMsg);我要去接i ==1。当我在msg和oracleMsg上盘旋时,它们看起来完全一样。以下是从每个变量复制的文本。
oracleMsg 0x00c1cd88 "OracleOraORA-24338:语句句柄未执行“char * MSG0x0132d0a4 "OracleOraORA-24338:语句句柄未执行“char *
发布于 2015-03-02 15:58:37
我的问题一定是它不是空终止的。我听从了ibre5041的建议,使用了if((strncmp(msg, oracleMsg, 55))== 0)。这只是比较前55个字符,从而避免了非空结束的问题。
https://stackoverflow.com/questions/28812940
复制相似问题