关于此代码:
Public Const NameColumn As String = "nameColumn"
...
Dim dataTable As New System.Data.DataTable
DataTable.Columns.Add(NameColumn, Type.GetType("System.String"))
DataTable.Columns.Add(AddressColumn, Type.GetType("System.String"))
DataTable.Columns.Add(CityColumn, Type.GetType("System.String"))
Dim dataRow As DataRow = dataTable.NewRow
dataRow(NameColumn) = Name 'exception here
请注意,Name
是string
。我已经尝试将“Bob”和“”等值分配给“Name”。我也尝试将“Bob”直接分配给`dataRow(NameColumn)
我得到了这个例外;
System.ArgumentException:输入字符串的格式不正确。 无法存储<>在NameColumn列中。预期类型是Int32。 ---> System.FormatException:输入字符串的格式不正确。
这些工作:
dataRow(NameColumn) = 123 'NO exception here
dataRow(NameColumn) = "123" 'NO exception here
这是意料之外的,因为我将列类型设置为System.String
。问题仅发生在第一列。第二和第三项工作就好了:
Dim dataRow As DataRow = dataTable.NewRow
dataRow(AddressColumn) = "123 Sesame St." ' No exception here
Dim dataRow As DataRow = dataTable.NewRow
dataRow(CityColumn) = "Brooklyn" 'NO exception here
是否预期第一列是int(一个Id)?
编辑: 问题可能只在于第一列。我已经修改了这个问题以显示多个专栏。第2列,第3列工作正常,但我只是发现了这一点,因为异常导致应用程序崩溃。添加上面的代码以反映这一点。