我有一个C#程序,其中INSERT,SELECT工作正常。我想尝试将DataGridView
更新到数据库。
如果我在GridView中删除了一行,那么它将作为DataTable发送到数据库,所有这一切都正常,除了一件事,它将新的条目写入我的三行,删除后应为2。 / p>
这是我的代码:
public void Update(DataTable dataforupdate, string table)
{
if (table == "Musik")
{
SQLiteDataAdapter adapter = new SQLiteDataAdapter("SELECT * FROM Musik",m_dbConnection);
SQLiteCommandBuilder builder = new SQLiteCommandBuilder(adapter);
adapter.Update(dataforupdate);
}
}
它应该删除表,然后插入包含所有数据的数据表(因为这是多次删除或插入时最简单的事情)。
编辑:它现在复制表并插入它,因此表格在那里2次。 使用" DELETE FROM Musik"似乎有点不必要。在添加DataTable之前,它确实有效,如果你能提供帮助,我想知道一个更好的解决方案。
答案 0 :(得分:1)
它应该删除表,然后插入带有所有数据的数据表(因为这是多次删除或插入时最容易做的事情)。
我不同意见。事实上,你所做的事实上是危险的,因为你没有使用交易。如果清空数据库后插入记录有异常会发生什么?你失去了一切。
在SQLite(或任何数据库)中进行多次插入/删除是相当简单的,例如
INSERT INTO SomeTable VALUES (A, B, C...)
INSERT INTO SomeTable VALUES (D, E, F...)
...
对于删除,一切都取决于删除的条件。例如,如果我想删除A > 10
DELETE FROM SomeTable WHERE A > 10
我建议您使用像sqlite-net这样的ORM,它会为您提供大量繁重的SQL。