Как удалить строку в 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().