C#SQLite FTS5表和Triger创建

时间:2018-07-30 19:43:44

标签: c# sqlite fts5

我正在使用sqlite fts5创建一个虚拟表,并且出现以下错误消息:SQL Logic错误没有这样的模块:FTS5。下面是我的代码: 在VS 2017中使用包管理器,我已经下载了SQLite和SQLite FTS5。

    private static void CreateReport()
    {
        try
        {
            using (SQLiteConnection sqliteConnection = new SQLiteConnection(DataSources.LocalConnectionString()))
            {
                sqliteConnection.Open();
                sqliteConnection.EnableExtensions(true);
                string commandText = "CREATE TABLE IF NOT EXISTS JReport(JRId INTEGER PRIMARY KEY, IDId INTEGER, CaseId INTEGER, BoxName TEXT, JRText TEXT, JRFormatted TEXT)";
                string commandText1 = "CREATE VIRTUAL TABLE IF NOT EXISTS DReport USING FTS5(JRId, CaseId, BoxName, CONTENT = 'JReport', CONTENT_ROWID = 'JRId')";
                string commandText2 = "CREATE TRIGGER DocRepo AFTER INSERT ON JReport BEGIN INSERT INTO DReport(RowId, JRId, CaseId, BoxName) VALUES(NEW.JRId, NEW.CaseId, NEW.BoxName) END";
                using (SQLiteCommand sqliteCommand = new SQLiteCommand(commandText, sqliteConnection))
                {
                    sqliteCommand.ExecuteNonQuery();
                    sqliteCommand.Dispose();
                }
                using (SQLiteCommand sqliteCommand = new SQLiteCommand(commandText1, sqliteConnection))
                {
                    sqliteCommand.ExecuteNonQuery();
                    sqliteCommand.Dispose();
                }
                using (SQLiteCommand sqliteCommand = new SQLiteCommand(commandText2, sqliteConnection))
                {
                    sqliteCommand.ExecuteNonQuery();
                    sqliteCommand.Dispose();
                }
                sqliteConnection.Close();
            }
        }
        catch (Exception ex)
        {
            MessageBoxEx.Show("An error has occurred while creating the Report table, the original error is: " +
                ex.Message, "Report", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

1 个答案:

答案 0 :(得分:0)

  

SQL Logic错误,没有这样的模块:FTS5。

就像错误消息所述,您的sqlite3库没有FTS5模块。构建库时,可能未将其配置为包含在内置库中,因为默认情况下未启用它。配置或构建您正在使用的库的任何人都可以将其作为可动态加载的模块使用。是否。

就我个人而言,我只是在我正在使用的任何程序中始终包含一个sqlite3.c的副本,该副本使用它来避免依赖于外部依赖关系,因此您可以确保始终使用具有所有功能的版本要使用礼物。不,您需要使用C#来使用自己的本地实例,但是我敢肯定有办法。

Instructions,用于将FTS5构建到sqlite3或作为可加载模块。