0

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

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

提前致谢

4

2 回答 2

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()
于 2013-06-04T16:25:19.217 回答
0

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

此外,为了手动处理动态插入、删除和更新查询,我遍历了数据表(对于 DataTable.Rows 中的每个 temprow As DataRow)并检查了 datatable.row(number).RowState

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

  2. DataRowState.Added-插入。除了使用 INSERT 语法外,与更新相同。

  3. DataRowState.Deleted - 删除。最简单的一种。只需要 ID 单元格值。

于 2013-06-11T11:11:16.933 回答