C#SQLite FTS5表和触发器创建

C#SQLite FTS5表和触发器创建,c#,sqlite,fts5,C#,Sqlite,Fts5,我正在使用sqlite fts5创建一个虚拟表,并收到以下错误消息:SQL逻辑错误无此类模块:fts5。下面是我的代码: 在VS 2017中使用Package manager,我已经下载了SQLite和SQLite FTS5 private static void CreateReport() { try { using (SQLiteConnection sqliteConnection = new SQLiteConne

我正在使用sqlite fts5创建一个虚拟表,并收到以下错误消息:SQL逻辑错误无此类模块:fts5。下面是我的代码: 在VS 2017中使用Package manager,我已经下载了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);
        }
    }
SQL逻辑错误没有这样的模块:FTS5

正如错误消息所说,sqlite3库没有FTS5模块。在构建库时,它可能没有配置为将其作为内置库包含,因为默认情况下它没有启用。无论是谁配置并构建了您正在使用的库,都可以将它作为一个可动态加载的模块提供。或者不是

就我个人而言,我总是在我使用的任何程序中包含一个sqlite3.c的副本,以避免依赖外部依赖性,因此您可以确保始终使用一个版本,该版本包含您想要使用的所有功能。不知道在C#中使用您自己的本地实例需要做什么,但我相信有一种方法


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

正在使用sqlite FTS5。我希望能够在sqlite表中搜索文档。嗯,肖恩,真的非常感谢你。我想问的一件事是,我可以使用fts4吗?这是否也需要上述场景?关键是我对重新编译sqlite不太在行,如果您使用的sqlite3版本是使用FTS3支持构建的(或者它作为可加载模块提供),我甚至不知道从哪里获取sqlite3.cDepends。与FTS5或sqlite的任何其他可选部分的问题相同。正如我所说的,最好在自己的版本中编译,这样您就知道所需的功能得到了支持,而不是依赖于系统库版本。您可以从sqlite网站获取源代码。