无法从SQLite数据库中删除行

时间:2014-06-03 16:19:37

标签: c# sqlite row sql-delete

尝试从sqlite数据库中删除一行时遇到了一些问题。

我像这样设置数据库:

CREATE TABLE IF NOT EXISTS patient ( patient_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, vorname VARCHAR(100) NOT NULL,nachname VARCHAR(100) NOT NULL,adresse VARCHAR(100) NOT NULL,ort VARCHAR(100) NOT NULL,plz INTEGER NOT NULL,geburtstag DATE NOT NULL);

肯定有数据,我试图删除这样的行:

public void deletePatientById(long id)
        {
            string deleteQuery = "DELETE FROM patient WHERE patient_id="+id.ToString()+";";
            SQLiteCommand command = new SQLiteCommand(deleteQuery, connection);
            command.ExecuteNonQuery();
            command.Dispose();
            MessageBox.Show("Patient: " + id.ToString() + " gelöscht");
        }

问题是,VS告诉我,没有名为patient_id的列。但实际上我可以看到。

有人知道这里可能有什么问题吗?

2 个答案:

答案 0 :(得分:1)

您是否指向正确的文件并且该文件是否包含该表?

创建文件和表

string file = @"C:\TestDB.sqlite";
conn = new SQLiteConnection(String.Format("Data Source={0};Version=3;", file));

if (!File.Exists(file))
{
    SQLiteConnection.CreateFile(file);
}

string createTable = "CREATE TABLE IF NOT EXISTS patient ( patient_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, vorname VARCHAR(100) NOT NULL,nachname VARCHAR(100) NOT NULL,adresse VARCHAR(100) NOT NULL,ort VARCHAR(100) NOT NULL,plz INTEGER NOT NULL,geburtstag DATE NOT NULL);";

conn.Open();

using (SQLiteCommand cmd = conn.CreateCommand())
{
    cmd.CommandText = createTable;
    cmd.ExecuteNonQuery();
}

conn.Close();

删除

public void deletePatientById(long id)
{
    conn.Open();
    using (SQLiteCommand cmd = conn.CreateCommand())
    {
        cmd.CommandText = String.Format("DELETE FROM patient WHERE patient_id={0}", id);
        cmd.ExecuteNonQuery();
    }
    conn.Close();
    MessageBox.Show("Patient: " + id.ToString() + " gelöscht");
}

答案 1 :(得分:0)

我现在自己找到了问题的答案。

它似乎与下划线有关。我只将patient_id更改为id,现在一切正常:)感谢您的努力。