我使用System.Data.SQLite,并SQLiteDataReader在我的C#项目.在使用附加数据库获取查询结果时,我遇到了性能问题.
以下是将文本搜索到两个数据库的查询示例:
ATTACH "db2.db" as db2;
SELECT MainRecord.RecordID,
((LENGTH(MainRecord.Value) - LENGTH(REPLACE(UPPER(MainRecord.Value), UPPER("FirstValueToSearch"), ""))) / 18) AS "FirstResultNumber",
((LENGTH(DB2Record.Value) - LENGTH(REPLACE(UPPER(DB2Record.Value), UPPER("SecondValueToSearch"), ""))) / 19) AS "SecondResultNumber"
FROM main.Record MainRecord
JOIN db2.Record DB2Record ON DB2Record.RecordID BETWEEN (MainRecord.PositionMin) AND (MainRecord.PositionMax)
WHERE FirstResultNumber > 0 AND SecondResultNumber > 0;
DETACH db2;
Run Code Online (Sandbox Code Playgroud)
使用SQLiteStudio或SQLiteAdmin执行此查询时,此工作正常,我在几秒钟内得到结果(记录表可以包含数十万条记录,查询返回36000条记录).
在我的C#项目中执行此查询时,执行也需要几秒钟,但运行所有结果需要几个小时.
这是我的代码:
// Attach databases
SQLiteDataReader data = null;
using (SQLiteCommand command = this.m_connection.CreateCommand())
{
command.CommandText = "SELECT...";
data = command.ExecuteReader();
}
if (data.HasRows)
{
while (data.Read()) …Run Code Online (Sandbox Code Playgroud) 我正在使用Sqlite在Microsoft Visual C#2008 Express中工作.
我知道我的文本中的一个叛逆者(')在查询中有问题.我的问题是,我认为我可以用\'替换它.它似乎没有工作......这是我的代码的一个例子:
string myString = "I can't believe it!";
cmd.CommandText = "Insert into myTable (myid,mytext) values (1,'" + myString.Replace("'","\\'") + "');";
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:SQLite错误:接近"t":语法错误
我尝试过其他一些替换品......就像其他的斜线一样.我将我的字符串和我的字符串的替换版本写入控制台,以确保它正确出现.
我在这里犯了什么愚蠢的错误?
谢谢!
-Adeena