【问题标题】:Updating datagridview with mysql用 mysql 更新 datagridview
【发布时间】:2015-04-03 04:15:31
【问题描述】:

我的更新文本框名为:updateref 我尝试使用所选列更新的数据字段是 refid

对不起,我是一个菜鸟,对将 mysql 与 vb.net 集成是新手,任何帮助将不胜感激!谢谢!

'MYSQL 代码

    Dim con As MySqlConnection = New MySqlConnection("my info")
    Dim reader As MySqlDataReader

    Try
        con.Open()
        Dim query As String
        Dim command As MySqlCommand
        query = "UPDATE exploitsociety SET reffer='" + updateref.Text + "' WHERE reffer='" + DataGridView1.CurrentCell.Selected + "';"
        command = New MySqlCommand(query, con)
        reader = command.ExecuteReader

        Catch ex As MySqlException
        MessageBox.Show(ex.Message)
    Finally
        con.Dispose()
        End try
        con.Close()

基本上,我只想编辑 dataviewgrid 中的列数据,然后点击更新,但这太复杂了,所以我添加了一个文本框,看看我是否可以这样做,但我也做不到。

【问题讨论】:

  • 您能说出您面临的异常或更新中的任何问题吗?
  • 是的,它只是抛出和 sql 错误,我认为这段代码所做的就是你选择的任何框,它会使用文本框更新 mysql db 中的那个框。我是否正确,这就是我打算做的。
  • 你能在这里提供错误详情吗
  • 附加信息:从字符串“UPDATE exploitsociety SET reffer”到类型“Double”的转换无效。
  • 我做了,但它抛出了同样的错误。

标签: mysql vb.net


【解决方案1】:

您似乎尝试更新查询

Dim con As MySqlConnection = New MySqlConnection("my info")
Dim reader As MySqlDataReader

Try
    con.Open()
    Dim query As String


     Dim command As MySqlCommand
        query = "UPDATE exploitsociety SET reffer='" + updateref.Text + "' WHERE reffer='" + DataGridView1.CurrentCell.Selected + "';"
        command = New MySqlCommand(query, con)
  //      reader = command.ExecuteReader

  //     you need to run ExecuteNonQuery instead of ExecuteReader
      int UpdatedRows=  command.ExecuteNonQuery();

        Catch ex As MySqlException
        MessageBox.Show(ex.Message)
    Finally
        con.Dispose()
        End try
    con.Close()

仅供参考n

ExecuteReader

Execute Reader 将用于在使用命令对象执行 SQL 查询或存储过程时返回行集。这是只向前检索记录,它用于从头到尾读取表值。(阅读有关 ExecuteReader 的更多信息)

ExecuteNonQuery

ExecuteNonQuery 方法将返回受 INSERT、DELETE 或 UPDATE 操作影响的行数。此 ExecuteNonQuery 方法将仅用于插入、更新和删除、创建和 SET 语句。 (Read More about ExecuteNonQuery)

【讨论】:

  • UpdatedRows 什么都不是,它只是返回更新的行数。这样您就可以确保您的表格行已更新。
【解决方案2】:

试试这个,看看它会抛出什么异常(如果有的话):

Using cn = New MySQLConnection("my info")
    cn.Open()
    Using cmd = New MySQLCommand("UPDATE exploitsociety SET reffer='" + updateref.Text + "' WHERE reffer='" + DataGridView1.CurrentCell.Selected + "'", cn)
         cmd.ExecuteNonQuery()
    End Using
End Using

【讨论】:

  • 这也抛出了双箭头
  • 那一定是你的查询。
【解决方案3】:

然后尝试以下查询进行更新,删除单引号。

query = "UPDATE exploitsociety SET refid=" + updateref.Text + " WHERE refid=" + DataGridView1.CurrentCell.Selected
 command = New MySqlCommand(query, con)
 command.ExecuteNonQuery()

您也可以获取所选单元格的值,如下所示

DataGridView1.SelectedCells[<index of column>].Value.ToString();

【讨论】:

  • @Jake,请告诉我referr 列的DataType,以及您在updateref 文本框中输入的值是什么
  • dataype 是 int 和 nextbox 中的数字,基本上只是试图用 updatered.text 中的内容更新突出显示的列
  • 正如你所说的列名是 refid 并且数据类型是 Int,我已经相应地更改了代码。请参阅更改后的答案。
  • 仍然抛出与此有关的错误:DataGridView1.CurrentCell.Selected,当我取出时错误消失
猜你喜欢
  • 2012-09-26
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多