我有一个名为isadded()的函数,它导致了我的程序崩溃。我运行了debugdiag并发现了这个问题。
Function Arg 1 Arg 2 Arg 3 Source
ntdll!RtlpWaitOnCriticalSection+df 00001484 00000002 00000000
ntdll!RtlEnterCriticalSection+a8 09e10c08 006310a5 09e10c08
sqlite3!sqlite3_mutex_leave+17b 09caf370 0c81d9c8 0063d240
sqlite3!sqlite3_get_table+99 09caf370 0c81d9c8 0c81d9bc
OServHandler!COServHandler::isAdded+17f 059a6fd8 0c8272e0 00000006
OServHandler!COServHandler::getHierarchy+ba7 0c940020 00008000 6009fb27
AdminConsoleInterface!CAdminConsoleInterface::handleConnection+178 00001254 00000000 00000000
AdminConsoleInterface!CAdminConsoleInterface::setOServHandler+33 008c5cd0 0250e9c8 00000000
因此,出现错误的行是sqlite3_get_table()。
sprintf_s(query,1024,"SELECT * FROM OServs WHERE oservname = '%s' ;", cOServID);
cout<<query<<endl;
rc = sqlite3_get_table(db, query, &results, &nrow, &ncol, &zErrMsg);
我想确定特定变量是否已经添加到数据库中。由于这个函数似乎会崩溃,所以有没有其他的替代方案呢?我记得读过这个函数已经被弃用了,但不知道有什么替代方法。