1

所以我通过 c# 从 mdb 文件中获取了一些数据

"SELECT * FROM " + listBox1.GetItemText(listBox1.SelectedItem) + " WHERE Note = '" + listBox2.GetItemText(listBox2.SelectedItem).Replace("'","\'") + "'";

选择正确的数据,这里是

SELECT * FROM Main WHERE Note ='Hello'

mdb 数据结构看起来像这样被绘制为 CSV 文件:

"Record ID";Status;Placement;Private;Category;Note;Blob
14341665;4;2147483647;True;3;"""Hello"" - Neues

但是当我尝试删除条目时

"DELETE FROM " + listBox1.GetItemText(listBox1.SelectedItem) + " WHERE \"Record ID\" LIKE '" + dr[0] + "';";

或者

"DELETE FROM " + listBox1.GetItemText(listBox1.SelectedItem) + " WHERE \"Record ID\" = '" + dr[0] + "';";

例如,这看起来像

DELETE FROM Main WHERE "Record ID" LIKE '14341665';

条目只是留在那里。我可以重新运行 select 命令,甚至重新启动我的应用程序,mdb 没有改变。

4

3 回答 3

4

记录 ID 是数字字段吗?如果是这样,请丢失引号。

DELETE FROM Main WHERE [Record ID] = 14341665;

请注意,字段(列)名称中的空格始终是个问题。这样的列名必须用方括号括起来,用保留字命名的列也是如此。

于 2012-06-19T12:00:15.400 回答
1

记录 id 是数字,所以不要在它周围加上撇号:

"DELETE FROM " + listBox1.GetItemText(listBox1.SelectedItem) + " WHERE \"Record ID\" = " + dr[0]

注意:您应该避免select *在生产代码中使用,您应该指定要返回的数据。此外,您应该使用参数化查询而不是将值连接到查询中。

于 2012-06-19T12:03:00.373 回答
0

如果我没记错的话,“like”仅适用于字符串数据,请检查记录 ID 的数据类型。

如果记录 ID 是数字,您可能需要使用数据库的转换函数将其转换为字符串,然后再使用“like”进行过滤。

顺便说一句,请记住确保正确转义 dr[0]。

于 2012-06-19T12:01:28.190 回答