尝试从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
的列。但实际上我可以看到。
有人知道这里可能有什么问题吗?
答案 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
,现在一切正常:)感谢您的努力。