1
我想从数据库中使用语句ID = r-> getInt(1)和stat = r- > getString(10)我已经将ID声明为int,并将stat作为字符串声明。 其中第一个字段是包含值1的ID,第10个字段是包含值“A”的状态。 如果我尝试只提取ID,我的代码工作正常。否则,当我尝试获取状态以及运行代码时,出现下面提到的错误:*** glibc检测到*** ./test:free():无效指针:
*** glibc detected *** ./test: free(): invalid pointer: 0x000000001c3f5a60 ***
======= Backtrace: =========
/lib64/libc.so.6[0x3d23e71684]
/lib64/libc.so.6(cfree+0x8c)[0x3d23e74ccc]
/usr/lib64/libstdc++.so.6(_ZNSsD1Ev+0x3a)[0x3d28a9dc1a]
./test[0x401837]
./test(__gxx_personality_v0+0x310)[0x401120]
/lib64/libc.so.6(__libc_start_main+0xf4)[0x3d23e1d8b4]
./test(__gxx_personality_v0+0x89)[0x400e99]
请帮忙。
添加什么,我想实现只是基础知识:
char loader_session[10];
char sql_query[500];
int ID;
string STATUS;
string CURRENT_CNT_FILE
env = Environment::createEnvironment (Environment::DEFAULT);
conn = env->createConnection(user, passwd, db);
strcpy(loader_session,"TEST");
sprintf(sql_query,"SELECT ID, SESSION_NAME, SRC_SUCCESS_PATH, SRC_CDR_PATH, LOG_FILE, CURRENT_CNT_FILE, LOG_MAX_FILE_CNT, LOG_MAX_FILE_SIZE, PROCEDURE_NAME, STATUS, ERROR_CDR_PATH, LOCK_FILE_PATH FROM TEST_DB WHERE SESSION_NAME = '%s'",loader_session);
Statement* const s = conn->createStatement(sql_query);
s->setPrefetchRowCount(10);
ResultSet* const r = s->executeQuery();
while (r->next())
{
ID = r->getInt(1);
STATUS = r->getString(10);
CURRENT_CNT_FILE = r->getString(6);
}
请与我们分享您的部分源代码。如果没有它,恐怕我们不能帮助并指出你的错误。 – 2013-02-25 14:09:52
@MikhailKalashnikov:请参考添加的代码。 在此先感谢。 – sajal 2013-02-25 17:33:31