gpt4 book ai didi

c++ - 无法执行 sqlite SQL 文件来创建数据库

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:51 25 4
gpt4 key购买 nike

我有一个带有长事务的 sql(文本文件)来创建数据库。

为此我正在使用 Kompex sqlite c++ 库:

// open database
Kompex::SQLiteDatabase *pDatabase = new Kompex::SQLiteDatabase(CT2A(strDBFilename), SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0);

// create statement instance for sql queries/statements
Kompex::SQLiteStatement *pStmt = new Kompex::SQLiteStatement(pDatabase);

strSQLCreateDB=get_file_contents(strSQLFilename).c_str(); // load the SQL file

try {
pStmt->Sql(strSQLCreateDB);
pStmt->ExecuteAndFree();
} catch(Kompex::SQLiteException &exception)
{
std::cerr << "Exception Occured" << std::endl;
exception.Show();
}

pDatabase->Close();

数据库是用 0 字节创建的,没有错误。即使没有 kompex 库,我也对任何示例代码感兴趣,以执行创建数据库的 sql 事务。

从 sqlite 浏览器执行数据库创建数据库没有错误。

这是SQL命令文件的一部分

/* Disable Foreign Keys */
pragma foreign_keys = off;
/* Begin Transaction */
begin transaction;

/* Database [scanlog(1)] */
pragma auto_vacuum=0;
pragma encoding='UTF-8';
pragma page_size=1024;

/* Drop table [ApplicationNames] */
drop table if exists [ApplicationNames];

/* Table structure [ApplicationNames] */
CREATE TABLE [ApplicationNames] (
[Id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[ApplicationName] TEXT,
[Icon] TEXT);
CREATE INDEX [IndexApps] ON [ApplicationNames] ([Id], [ApplicationName]);

/* Data [ApplicationNames] */
insert into [ApplicationNames] values(1, 'Windows System', null);
insert into [ApplicationNames] values(2, 'Internet Explorer', null);
insert into [ApplicationNames] values(3, 'Google Chrome', null);

/* Commit Transaction */
commit transaction;

/* Enable Foreign Keys */
pragma foreign_keys = on;

最佳答案

这似乎可行:

// open connection to a DB
if (SQLITE_OK != (ret = sqlite3_open_v2(CT2A(strDBFilename), &pDb, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL)))
{
TRACE("Failed to open SQLite conn: %d\n", ret);
break;
}

// prepare the statement
if (SQLITE_OK != (ret = sqlite3_prepare_v2(pDb, CT2A(strSQLCreateDB), -1, &query, NULL)))
{
TRACE("Failed to prepare SQLite script: %d, %s\n", ret, sqlite3_errmsg(pDb));
break;
}

if (SQLITE_OK != (ret=sqlite3_exec(pDb, CT2A(strSQLCreateDB), NULL, 0, NULL)))
{
TRACE("Failed to execute SQLite script: %d, %s\n", ret, sqlite3_errmsg(pDb));
break;
}

关于c++ - 无法执行 sqlite SQL 文件来创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19870471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com