Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C sqllite数据表到数据库的更新将不起作用_C#_Database_Sqlite - Fatal编程技术网

C# C sqllite数据表到数据库的更新将不起作用

C# C sqllite数据表到数据库的更新将不起作用,c#,database,sqlite,C#,Database,Sqlite,我有一个C程序,其中插入,选择工作良好。我想尝试将我的DataGridView更新到数据库 如果我在GridView中删除一行,那么它将作为DataTable发送到db,所有这一切都可以正常工作,除了一件事,它会将新条目写入到我的三行中,这三行在删除后应为2,变为5 这是我的密码: public void Update(DataTable dataforupdate, string table) { if (table == "Musik") { SQL

我有一个C程序,其中插入,选择工作良好。我想尝试将我的DataGridView更新到数据库

如果我在GridView中删除一行,那么它将作为DataTable发送到db,所有这一切都可以正常工作,除了一件事,它会将新条目写入到我的三行中,这三行在删除后应为2,变为5

这是我的密码:

 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);
     }
 }
它应该删除该表,然后插入包含所有数据的datatable,因为在进行多次删除或插入时,这是最简单的操作

编辑:它现在复制并插入表格,因此表格在其中有2倍。 在添加数据表之前使用DELETE FROM Musik似乎有点不必要,但它确实有效,如果您能提供帮助,我想知道更好的解决方案

它应该删除该表,然后插入包含所有数据的datatable,因为在进行多次删除或插入时,这是最简单的操作

我不敢苟同。事实上,您所做的实际上是危险的,因为您没有使用事务。如果清空数据库后插入记录时出现异常,会发生什么情况?你失去了一切

在SQLite或任何数据库中进行多个插入/删除是相当简单的

INSERT INTO SomeTable VALUES (A, B, C...) 
INSERT INTO SomeTable VALUES (D, E, F...)
...
对于删除,这完全取决于删除的条件。例如,如果我想删除A>10的所有记录


我建议您考虑使用ORM,它可以为您完成大量繁重的SQL提升。

为什么要删除整个表。您应该删除行,并更新行。除非您的更改影响了几乎所有的表,否则您的方法将是正确的。我想这会更容易,因为我不知道如何正确使用它。至于现在,它需要新的条目和插入到数据库中,以及所有已经存在的条目。因此,每次我添加一个新条目时,它都会将所有条目+1插入db,这意味着每次运行时db都会加倍。谢谢您的回答。。我必须承认我在删除然后插入表时犯了错误。但主要的问题是,这可以通过使用数据集/数据表来实现,还是我应该只使用纯查询字符串?我永远不会真正建议使用纯查询字符串,除非你真的必须这样做,因为你需要确保你满足安全性要求。一般来说,使用ORM工具更安全、更容易,但是,像现在这样使用DataTable并没有什么害处。我想说的一点是,你不应该仅仅为了添加/删除几行而清空一个完整的表。。谢谢你的回答,我会看看这个ORM工具,看看我能不能找到它。如果我要使用DataTable,那么我应该如何使用它,而不必在每次重复时清空表。@T.BYgg您只需从表中删除不再需要的行,然后更新适配器,请参阅。
DELETE FROM SomeTable WHERE A > 10