Mysql 为什么在vb中替换datagridview值时出错?
我有一个datagridview,它保存一个导入的excel文件。我还有一个MySQL数据库,它保存了我想在datagridview中替换的值以及将替换以前的值的值 这是我的数据库: 我想要完成的是在datagridview单元格中循环,并在Content字段中找到值,然后用Convert字段中的相应值替换它。例如,所有1将替换为11,所有名称1将替换为Std名称1,所有18将替换为18岁 我使用以下代码: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
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。。。谢谢:)