sqlite3_get_table的替代方案

Alternative to sqlite3_get_table

本文关键字:方案 table get sqlite3      更新时间:2023-10-16

我有一个名为isadded()的函数,它是导致我的程序崩溃的原因。我运行调试,发现这个

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);

基本上,我想看看是否已经在数据库中添加了一个特定的变量。由于这个函数似乎崩溃了,是否有其他替代方法?我记得读到过这个函数已经被弃用了,但不知道还有什么替代方法。

您使用少量命令来替换sqlite3_get_table。下面是基本的c/c++入门教程,它解释了这个过程。你必须做更多的工作,但有更多的控制。

每个函数在sqlite3参考的函数部分都有很好的文档。

更新:

作为一种选择,您可以使用sqlite3_exec,它不那么紧张。下面是我找到的一小段代码示例:

http://souptonuts.sourceforge.net/code/simplesqlite3.c.html

相关文章: