【问题标题】:How to Insert data from datagridview Rows to mysql database in vb.net using stored procedure如何使用存储过程将 datagridview 行中的数据插入 vb.net 中的 mysql 数据库
【发布时间】:2021-07-21 09:15:27
【问题描述】:

我卡住了。我正在尝试将数据从网格插入到数据库中。但我被卡住了。

【问题讨论】:

  • 不要只发布代码或错误消息的图片,也不要发布只有一小部分相关的大屏幕截图。始终以文本形式发布您的代码和错误消息,并采用适当的格式。也发布截图,但前提是它增加了价值。此外,如果您的标题比您的帖子长,那么这是一个糟糕的问题。始终对问题中的问题提供完整而清晰的解释,然后在标题中进行总结。再试一次。
  • 一般来说,你做错了。没有循环。使用DataTable 和数据适配器。使用适当的架构创建一个DataTable,如果合适,从数据库中填充它,将其绑定到网格,根据需要进行更改,然后通过在数据适配器上调用Update 一次性保存所有内容。周围有很多例子。 Here是我之前准备的。
  • 您收到异常,因为在处理第一行后,您正在清除参数集合。所以在循环外设置的所有参数都没有了。

标签: mysql vb.net stored-procedures


【解决方案1】:

Slugsie 的评论中肯,但需要进一步说明:

在调用过程之前,您实际上是在清除整个参数集合。如果它是一栋房子,你会竭尽全力建造整栋建筑,然后在最后一刻将其拆除并向客户展示已清理干净的地块

根本不清除参数集合。将所有参数添加到循环外,然后在循环内设置值:


    'general pattern
    cmd.Parameters.AddWithValue("param1", "...")
    cmd.Parameters.AddWithValue("param2", "...")
    cmd.Parameters.AddWithValue("param3", "...")
    cmd.Parameters.AddWithValue("param4", "...")

    For Each something In somethingElse
      cmd.Parameters("param1").Value = something.Whatever1
      cmd.Parameters("param2").Value = something.Whatever2
      cmd.Parameters("param3").Value = something.Whatever3
      cmd.Parameters("param4").Value = something.Whatever4
      cmd.Execute...
    Next something

这就是你应该采用的模式


虽然 jmc 也做出了有用的评论;你可以让你的生活更轻松

  • 将 DataSet 类型文件添加到您的项目中
  • 打开它,右键单击表面,选择添加 TableAdapter
  • 为适配器配置向导时,假设您想使用存储过程进行选择、插入、更新等操作
  • 将过程连接到相关的表列

现在在代码中,您可以只保存一两行数据:

Dim t as New WhateverTableAdapter
t.Update(yourWhateverDatatable) 'the WhateverDataTable is bound to a grid, the user has edited the rows in it by changing the grid

Update() 调用将执行插入/更新/删除过程的任何必要使用,具体取决于表中的数据行是已添加、已修改还是已删除状态

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多