如何通过按钮将VB窗体ListView选中数据从table1插入table2并删除原数据
代码问题定位
- 语法错误:MySQL 中从一张表复制数据插入另一张表的正确语法是
INSERT INTO 目标表 SELECT 字段 FROM 源表 WHERE 筛选条件,你拆分写的两句INSERT、SELECT本身就是无效写法 - 逻辑错误:你定义
cmd变量存储插入语句后,下一行直接用SELECT语句覆盖了cmd的值,插入逻辑直接丢失 - 执行逻辑缺失:整段代码中你完全没有执行插入相关的命令,只运行了DELETE删除语句,自然只有删除功能生效,没有数据转移效果
修正后的代码参考
If rs.State <> 0 Then rs.Close() ' 拼接正确的插入+查询语句,先把对应数据插入completed_item Dim insertCmd As String = "INSERT INTO completed_item SELECT * FROM sale_transactions WHERE id=" & ListView1.SelectedItems(0).Text ' 执行插入操作 rs.Open(insertCmd, con, 2, 3) ' 确认插入成功后再执行删除 If rs.State <> 0 Then rs.Close() Dim deleteCmd As String = "DELETE FROM sale_transactions WHERE id=" & ListView1.SelectedItems(0).Text rs.Open(deleteCmd, con, 2, 3)
优化建议
- 建议增加插入执行结果的校验,确认插入行数大于0再执行删除,避免源数据丢失
- 不要直接拼接SQL语句,改用参数化查询,避免SQL注入风险
- 可以给INSERT语句指定字段列表,避免两张表字段顺序不一致时插入报错
内容的提问来源于stack exchange,提问作者Sammy
相关产品推荐
相关产品推荐

