我正在尝试创建一个临时表,但我一直在打开错误。下面的g_MainDB是我的主数据库。在创建临时表时,我是否必须使用其他数据库?
当我运行此代码时,出现以下错误:
ExecuteSQL: step failed: unable to open database file
我有2个线程打开g_MainDB,但我认为,因为在主数据库中没有创建临时表,这不会有问题吗?
有人可以请我提供一个如何创建临时表的示例,或告诉我我使用的代码是否存在问题......还是确实存在锁定问题?
我有以下代码:
sprintf( g_txSQL, "CREATE TEMP TABLE TempPlaylist (Seq INTEGER PRIMARY KEY AUTOINCREMENT, MD5 VARCHAR)" );
ExecuteSQL( g_txSQL );
...
BOOL ExecuteSQL( char *pszSQL )
{
sqlite3_stmt *stmt;
int rc;
rc = sqlite3_prepare_v2( g_MainDB, pszSQL, -1, &stmt, NULL );
if( rc != SQLITE_OK )
{
LogDebugf( "ExecuteSQL: prepare failed: %s\n", sqlite3_errmsg( g_MainDB ) );
return FALSE;
}
rc = sqlite3_step( stmt );
if( rc != SQLITE_ROW && rc != SQLITE_DONE )
{
LogDebugf( "ExecuteSQL: step failed: %s\n", sqlite3_errmsg( g_MainDB ) );
sqlite3_finalize( stmt );
return FALSE;
}
sqlite3_finalize( stmt );
return TRUE;
}