动态更新新列的数据表列已添加到数据库中

时间:2013-06-04 12:56:11

标签: vb.net datatable visual-studio-2005

现在的问题是,如果我改变表以向数据库添加新列,清除数据表,填充数据表,则无法找到新列。即使我重新启动程序,数据表中的列数仍然是静态的,因为它是最后一次通过Visual Studio刷新。 我知道如何刷新表以显示新列的唯一方法是在数据表适配器的选择查询上按修改,按configure并按完成。然后它更新。但这对我来说并不是真正的解决方案。

示例如下: 每种语言都有一个控件名称表。 行是不同的控件,列是不同的语言(加上ID和通用控件名称c)。 为了添加新语言,用户必须添加新列。在ALTER TABLE查询之后,即使刷新网格后也无法显示。这是由于使用具有静态列的Visual Studio接口创建的数据表。这就是我的问题所在。

提前致谢

2 个答案:

答案 0 :(得分:0)

使用ALTER命令..

Dim commandString as String = "ALTER TABLE " + TableName + " ADD COLUMN " + FieldName + " " + Type

Dim Conn As OleDbConnection = new OleDbConnection( your connection )

Conn.Open()

Dim Command As OleDbCommand = new OleDbCommand(commandString, Conn)

Command.ExecuteNonQuery()

Conn.Close()

答案 1 :(得分:0)

所以我解决了这个问题: 我通过代码创建了一个数据表,每次添加一列时,我都通过datatable.Load(SqlDataReader)用SqlDataReader更新它。然后我刷新网格并更新。

此外,为了手动处理动态插入,删除和更新查询,我遍历数据表(For Each temprow As DataRow in datatable.Rows)并检查datatable.row(数字).RowState

  1. DataRowState.Modified - UPDATE。我获得了表中的列数,并使用它们循环并使用列标题和单元格值进行动态查询。

  2. DataRowState.Added- INSERT。与使用INSERT语法的更新相同。

  3. DataRowState.Deleted - DELETE。最简单的一个。只需要ID单元格值。