在 VB 2010 的数据表中插入新列时,如何更新 SQL Server 2008 数据库?

Posted

技术标签:

【中文标题】在 VB 2010 的数据表中插入新列时,如何更新 SQL Server 2008 数据库?【英文标题】:When inserting new columns in a datatable in VB 2010, how do I update the SQL Server 2008 Database? 【发布时间】:2012-10-31 23:30:36 【问题描述】:

使用 VB 2010 和 SQL Server 2008:

我能够在数据表中插入新行、删除行和更新数据,并使用数据适配器更新数据库而不会出现任何问题。当我尝试添加新列时,该列出现在数据表中,但它不会更新到数据库中。我目前正在使用 DataAdapter.Update(DataTable) 方法。

我的代码如下:

Dim dcNewColumn As New DataColumn
dcNewColumn.ColumnName = strClassColumnName
m_DataTable.Columns.Add(dcNewColumn)
m_DataTable.Row(intCurrentRow).Item(strClassColumnName) = strClassName
dcNewColumn = Nothing

m_DA.Update(m_DataTable)

插入新列时是否有不同的方法来更新数据库?

【问题讨论】:

【参考方案1】:

您正在寻找ALTER TABLE sql 命令。 或SQLDMO Columns Collection(请查看页面开头的通知)

添加列的 ALTER TABLE 命令可以这样编码

Dim cn As SqlConnection
Dim cmd As SqlCommand
Using cn = GetConnection()
    cn.Open()
    Using cmd = new SqlCommand()
         cmd.Connection = cn
         cmd.CommandText = "ALTER TABLE myTable ADD aNewColumn VARCHAR(20) NULL"
         cmd.CommandType = CommandType.Text
         cmd.ExecuteNonQuery()
    End Using
End Using

【讨论】:

我正在尝试使用此代码,但遇到了一些麻烦。我的连接在此之前已经打开,因为我在整个过程中都在使用它。我正在使用以下内容: Dim cmd As SQLCommand Using cn Using cmd = new SQLCommand() cmd.CommandText = "ALTER TABLE Interval ADD " & strClassName & " Text NULL" cmd.CommandType = CommandType.Text cmd.ExecuteNonQuery() End Using结束使用 我收到“ExecuteNonQuery:连接属性尚未初始化”错误。关于我可以做些什么来纠正这个问题的任何想法? 哇,我也不太确定回复答案的最佳方式。有没有更好的方法来显示我的代码块? 对不起,忘记将连接绑定到实际的SqlCommand,答案已更新 您可以尝试更新原始问题,但错误消息足以理解我的错误。 啊哈!厉害了先生感谢您的帮助。我非常感谢!我想投票给答案,但我需要更多的声望点。【参考方案2】:

添加新列不是更新。您可以发出一些 sql 来更改数据库中表的结构,例如

Alter Table MyTable AddMyNewColumn int null 

如果您有相关权限。

除了管理员类型的功能外,这不是您通常会做的事情。

【讨论】:

以上是关于在 VB 2010 的数据表中插入新列时,如何更新 SQL Server 2008 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 Sequelize 更改列或添加新列时更新迁移文件

插入新列时的单元格引用

FMDB:添加新列并插入数据

Python:如何在比较其他列时将列值填充到另一个数据框中的新列?

如何在单个级别上添加新列时使用 pandas group-by?

将查询结果插入 mysql 中的列时,无法从发送到 GEOMETRY 字段的数据中获取几何对象