我正在尝试在C#中的循环中插入数据库记录.
它在我硬编码这样的值时起作用:
string query3 = "INSERT INTO furniture (room_id,member_id) VALUES (222,333);"; sqlCommand cmd3 = new sqlCommand(query3,sqlConnection3); sqlConnection3.Open(); for (int i = 0; i < arrItemsPlanner.Length; i++) { try { cmd3.ExecuteNonQuery(); } catch { return "Error: Item could not be saved"; } finally { //Fail } }
但是,当我使用参数化查询时,它不起作用 – 即使我将值硬编码到参数化查询中,如下所示:
string query3 = "INSERT INTO furniture (room_id,member_id) VALUES (@room_id,sqlConnection3); sqlConnection3.Open(); for (int i = 0; i < arrItemsPlanner.Length; i++) { try { cmd3.Parameters.Add("@room_id",System.Data.sqlDbType.Int); cmd3.Parameters["@room_id"].Value = 222; cmd3.ExecuteNonQuery(); } catch { return "Error: Item could not be saved"; } finally { //Fail } }
有人能看到我在哪里错了吗?
非常感谢!
解决方法
看起来你一遍又一遍地添加命令的参数集合.每次迭代都清除它.
我还建议抛出实际的异常,这样你就可以看到问题所在.