【问题标题】:When inserting new columns in a datatable in VB 2010, how do I update the SQL Server 2008 Database?在 VB 2010 的数据表中插入新列时,如何更新 SQL Server 2008 数据库?
【发布时间】: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)

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

【问题讨论】:

    标签: vb.net sql-server-2008


    【解决方案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 
    

    如果您有相关权限。

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

    【讨论】:

      猜你喜欢
      • 2011-02-16
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      • 2014-04-20
      相关资源
      最近更新 更多