C # SQLite FTS5 الجدول وإنشاء Triger

0

أقوم بإنشاء جدول افتراضي باستخدام sqlite fts5 ولدي رسالة الخطأ التالية: خطأ منطق SQL لا يوجد مثل هذه الوحدة النمطية: FTS5. فيما يلي الكود الخاص بي: باستخدام Package manager في 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

SQL Logic error no such module: FTS5.

تمامًا كما تقول رسالة الخطأ ، لا تحتوي مكتبة sqlite3 على وحدة FTS5. ربما لم يتم تكوينها لتضمينها كواحدة مضمنة عندما تم بناء المكتبة ، حيث لم يتم تمكينها افتراضيًا. ربما تم إتاحته كوحدة قابلة للتحميل ديناميكيًا من قبل أي شخص قام بتكوين وبناء المكتبة التي تستخدمها. أم لا.

أنا شخصياً أقوم دائمًا بتضمين نسخة من sqlite3.c في أي برنامج أستخدمه يستخدمه لتجنب الاعتماد على تبعية خارجية ، لذا يمكنك التأكد من أنك تستخدم دائمًا إصدارًا يحتوي على جميع الميزات التي تريد استخدامها حاضر. دونو ما عليك القيام به في C # لاستخدام المثيل المحلي الخاص بك ، ولكن أنا متأكد من أن هناك طريقة.

تعليمات لبناء FTS5 في sqlite3 أو كوحدة قابلة للتحميل.

:مؤلف
فوق
قائمة طعام