C# 4.0 从单个文件执行多个SQLite语句时出现问题
我一直在使用p/Invoke编写一个关于SQLite的瘦包装器,我想让它能够从文件中读取语句(用于引导等)。我在一个文件中写了以下内容:C# 4.0 从单个文件执行多个SQLite语句时出现问题,c#-4.0,sqlite,pinvoke,C# 4.0,Sqlite,Pinvoke,我一直在使用p/Invoke编写一个关于SQLite的瘦包装器,我想让它能够从文件中读取语句(用于引导等)。我在一个文件中写了以下内容: CREATE TABLE Test (Col1 INTEGER, Col2 TEXT); INSERT INTO Test (Col1, Col2) VALUES (1, 'test1'); INSERT INTO Test (Col1, Col2) VALUES (2, 'test2'); 此文件通过file.ReadAllText()读取,通过sql
CREATE TABLE Test
(Col1 INTEGER,
Col2 TEXT);
INSERT INTO Test (Col1, Col2) VALUES (1, 'test1');
INSERT INTO Test (Col1, Col2) VALUES (2, 'test2');
此文件通过file.ReadAllText()读取,通过sqlite3_prepare()准备,并通过sqlite3_step()执行。此过程已成功准备并执行单行SQLite语句
发生的情况是创建了表,但两个insert语句都没有运行。为了能够在一个字符串中插入多个语句,我需要做什么?尝试在每个语句之后使用
GO
。会是这样的,
CREATE TABLE Test
(Col1 INTEGER,
Col2 TEXT);
GO
INSERT INTO Test (Col1, Col2) VALUES (1, 'test1');
INSERT INTO Test (Col1, Col2) VALUES (2, 'test2');
有关的详细信息,请尝试在每条语句后使用一个
GO
。会是这样的,
CREATE TABLE Test
(Col1 INTEGER,
Col2 TEXT);
GO
INSERT INTO Test (Col1, Col2) VALUES (1, 'test1');
INSERT INTO Test (Col1, Col2) VALUES (2, 'test2');
更多关于的信息使我们明白了这一点。结果表明,sqlite3_step()一次只能执行一条语句。因此,您需要为字符串中的每个语句调用一次sqlite3_step()。这涉及到一点,因为无论执行了多少条语句,返回代码SQLITE_DONE都会返回;在执行字符串之前,我正在进行分号计数。或者,如果不想处理循环业务,可以使用sqlite3_exec()。结果表明,sqlite3_step()一次只能执行一条语句。因此,您需要为字符串中的每个语句调用一次sqlite3_step()。这涉及到一点,因为无论执行了多少条语句,返回代码SQLITE_DONE都会返回;在执行字符串之前,我正在进行分号计数。或者,如果您不想处理循环业务,可以使用sqlite3_exec()。GO是SQL Server。问题是关于sqlite.GO是SQL Server的。问题是关于sqlite的。你知道System.Data.sqlite吗?我知道,但我想有编写P/Invoke包装器的经验-这是我第一个使用它的项目,进展非常顺利。你知道System.Data.sqlite吗?我知道,但我希望有编写P/Invoke包装器的经验——这是我的第一个使用它的项目,进展得出奇地好。