C# 无法从SQLite数据库中删除行
我在尝试从sqlite数据库中删除一行时遇到了一个小问题 我将数据库设置为:C# 无法从SQLite数据库中删除行,c#,sqlite,row,sql-delete,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,pl
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");
}
其中肯定有数据,我尝试删除一行,如下所示:
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\u id
的列。但事实上,就我所能看到的范围而言
有人知道这里可能出了什么问题吗?您是否指向正确的文件,该文件是否有表格 创建文件和表
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");
}
我现在自己找到了问题的答案
它似乎与下划线有关。我将
patient\u id
改为id
,现在一切正常:)谢谢你的努力。你能从patient表中发布列的名称吗?你可以在create语句中看到的名称,第一个实际上是patient\u id,这很奇怪,我使用你提供的示例没有问题。很高兴你让它工作了。