如何使用SQLite创建TEMP TABLE

时间:2014-10-08 01:54:18

标签: sqlite locking temp-tables create-table

我正在尝试创建一个临时表,但我一直在打开错误。下面的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;
}

0 个答案:

没有答案