在 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 更改列或添加新列时更新迁移文件
Python:如何在比较其他列时将列值填充到另一个数据框中的新列?