Как удалить строку в SQLite через C# (.NET WinForms)?

Мне надо удалить строку по rowid, но по той или иной причине, SQLite не принимает мой запрос. В SQLite строка не удаляется. ExecuteNonQuery возвращает 0.

private void button2_Click(object sender, EventArgs e)
{
    int itemIndex = this.listView1.FocusedItem.Index + 1;
    GuestsDatabase guestsDB = new GuestsDatabase();
    string query = "DELETE FROM GuestsList WHERE rowid = " + itemIndex + ";";
    MessageBox.Show(query);
    SQLiteCommand myCommand = new SQLiteCommand(query, guestsDB.sqliteCon);
    guestsDB.OpenConnection();
    var result = myCommand.ExecuteNonQuery(); //Возвращает 0 
    guestsDB.CloseConnection();
    MessageBox.Show(result.ToString());
}

Класс GuestsDatabase:

public class GuestsDatabase
{
    public SQLiteConnection sqliteCon;

    public GuestsDatabase()
    {
        sqliteCon = new SQLiteConnection("DataSource=guestsDB.sqlite3");

        if (!File.Exists("./guestsDB.sqlite3"))
        {
            SQLiteConnection.CreateFile("guestsDB.sqlite3");
        }

    }
        
    public void OpenConnection()
    {
         if (sqliteCon.State != System.Data.ConnectionState.Open)
         {
            sqliteCon.Open();
         }
    }

        
    public void CloseConnection()
    {
        if (sqliteCon.State != System.Data.ConnectionState.Closed)
        {
            sqliteCon.Clone();
        }
    }
}

Ответы (1 шт):

Автор решения: Neomaster

Попробуйте так

private void button1_Click(object sender, EventArgs e)
{
    string connStr = @"Data Source = .......\test.db";
    using (SQLiteConnection conn = new SQLiteConnection(connStr))
    {
        conn.Open();
        
        int id = 2; 
        string sql = $"DELETE FROM table WHERE id = {id}";
        SQLiteCommand cmd = new SQLiteCommand(sql, conn);
        int result = cmd.ExecuteNonQuery();

        MessageBox.Show(result.ToString());
    }
}

Рекомендации

Используйте using для кода, работающего с БД. Это обезопасит, не нужно каждый раз писать команды с Close() и Dispose().

→ Ссылка