Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 为什么在vb中替换datagridview值时出错?_Mysql_Vb.net_Datagridview - Fatal编程技术网

Mysql 为什么在vb中替换datagridview值时出错?

Mysql 为什么在vb中替换datagridview值时出错?,mysql,vb.net,datagridview,Mysql,Vb.net,Datagridview,我有一个datagridview,它保存一个导入的excel文件。我还有一个MySQL数据库,它保存了我想在datagridview中替换的值以及将替换以前的值的值 这是我的数据库: 我想要完成的是在datagridview单元格中循环,并在Content字段中找到值,然后用Convert字段中的相应值替换它。例如,所有1将替换为11,所有名称1将替换为Std名称1,所有18将替换为18岁 我使用以下代码: MysqlQuery = "SELECT * FROM contents" M

我有一个datagridview,它保存一个导入的excel文件。我还有一个MySQL数据库,它保存了我想在datagridview中替换的值以及将替换以前的值的值

这是我的数据库:

我想要完成的是在datagridview单元格中循环,并在Content字段中找到值,然后用Convert字段中的相应值替换它。例如,所有1将替换为11,所有名称1将替换为Std名称1,所有18将替换为18岁

我使用以下代码:

MysqlQuery = "SELECT * FROM contents"
    MysqlComm = New MySqlCommand(MysqlQuery, MysqlConn)
    MysqlReader = MysqlComm.ExecuteReader

    While MysqlReader.Read
        Dim content = MysqlReader.GetString("Content")
        Dim convert = MysqlReader.GetString("Convert")
        For Each row As DataGridViewRow In dgvFile.Rows
            For Each cell As DataGridViewCell In row.Cells
                If cell.Value IsNot Nothing Then
                    If cell.Value.ToString = content.ToString Then
                        cell.Value = convert.ToString
                    End If
                End If
            Next
        Next
    End While

        MessageBox.Show("File successfully converted")
此代码转换为1=11,名称1=Std名称1,但不是18=18岁,并显示此错误

问题 为什么会出现此错误?如何修复此错误?非常感谢您的回答和建议。谢谢。:)

更新 对于那些看不到错误消息的人,这里就是

The following exception occurred in the DataGridView:

System.Exception: 18 Years Old is not a valid value for Double, --->
System.FormatException: Input string was not in a correct format.
 at System.Number.PraseDouble(String value, NumberStyles options,
NumberFormatInfo numfmt)
 at System.Double.Parse(String s, NumberStyles style, IFormatPRovider     provider)
 at System.ComponentModel.DoubleConverter.FromString(String value,   NumberFormatInfo formatInfo)
 at     System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext  context, CultureInfo culture, Object value)
--- End of inner exception stack trace ---
 at    System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext   context, CultureInfo culture, Object value)
 at System.ComponentModel.TypeConverter.ConvertFrom(Object value)
 at  System.Windows.Forms.DataGridView.DataGridViewDataConnection.PushValue(Int32  boundColumnIndex, Int32 columnIndex, Int32 rowIndex, Object value)

To replace this default dialog please handle the DataError event

似乎是这一行导致了错误:

cell.Value=convert.ToString

这可能是因为列类型是
String
(可能是整数或双精度)

设置值时,您可以将值放入正确的类型,而不是执行
ToString


另一个选项是将网格的所有列类型设置为
String
。但是,您必须考虑到必须更改列的排序(您需要找到排序事件,并在排序时将值转换为正确的类型)。

在此处看不到错误消息…请也发布此消息。@akhilkumar更新了我的问题。我包括了你的请求。你现在明白了问题所在。检查要转换为“18岁”的列的数据类型。它应该是双精度的。您不能在具有双精度数据类型的列中输入字符串。请将该列的数据类型更改为字符串。我已经考虑了几个小时,并试图找到需要更改数据类型的位置。数据库中的所有my字段都是文本,Id除外(在场景中不使用)。但是由于你的评论,我意识到我的excel列可能没有正确的格式。我在excel中将所有列都改为文本格式,效果非常好。这是分类的。谢谢你的帮助。:)谢谢你的帮助。excel文件的列并非全部为文本,因此我无法输入不同类型的值。这是分类的。:)@Nek-只是一个奇怪的问题-为什么你使用vb.net而不是C?我不擅长C。我更熟悉vb.net。但我正在考虑在下一个项目中使用C#。我需要很快完成这篇文章,所以我现在没有时间学习C。:)我自己都懂这两种语言,但由于我们发展的历史原因,我使用vb.net。。。谢谢:)