添加列的ALTER TABLE不起作用

时间:2015-07-02 16:22:20

标签: sql sql-server vb.net webforms

我在SQL Server中有这个存储过程:

ALTER PROCEDURE New_Column
        @table_name varchar(25),
        @column_name varchar(25)
AS
BEGIN
    DECLARE @mySql nvarchar (MAX)

    SET NOCOUNT ON;

    SET @mySql = 'ALTER TABLE '+@table_name+' ADD '+@column_name+' INT'
    EXEC (@mySql)
END

这个代码在Visual Studio中,使用VB.Net和Web表单

Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports System.Data
Imports System.Web

Public Class Add_Column
    Inherits System.Web.UI.Page

    Public strConn As String = "Data Source=.;Initial Catalog=EECRDashboard;Integrated Security=True"
    Private sqlCon As SqlConnection

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        SelectTableName()
    End Sub

    Public Sub SelectTableName()
        If Not IsPostBack Then
            Try
                sqlCon = New SqlConnection(strConn)
                Dim reader As SqlDataReader
                Using (sqlCon)
                    Dim sqlComm As New SqlCommand()

                    sqlComm.Connection = sqlCon

                    sqlComm.CommandText = "SelectTableName"
                    sqlComm.CommandType = CommandType.StoredProcedure

                    sqlCon.Open()
                    reader = sqlComm.ExecuteReader()
                    cboTableName.DataSource = reader
                    cboTableName.DataTextField = "TABLE_NAME"
                    cboTableName.DataValueField = "TABLE_NAME"
                    cboTableName.DataBind()
                    Dim Period As String = cboTableName.SelectedValue
                    sqlCon.Close()

                End Using
            Catch ex As Exception
            End Try
        End If 
    End Sub

    Protected Sub cboTableName_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboTableName.SelectedIndexChanged
        SelectTableName()
    End Sub

    Private Sub Insert_Column()
        Try
            sqlCon = New SqlConnection(strConn)
            Using (sqlCon)

                Dim sqlComm As New SqlCommand()

                sqlComm.Connection = sqlCon
                sqlCon.Open()
                sqlComm.CommandText = "New_Column"
                sqlComm.CommandType = CommandType.StoredProcedure
                sqlComm.Parameters.Add("@column_name", SqlDbType.VarChar).Value = txtColumnName.Text()
                sqlComm.Parameters.Add("@table_name", SqlDbType.VarChar).Value = Convert.ToInt32(cboTableName.SelectedValue.ToString)
                sqlComm.ExecuteNonQuery()
                sqlCon.Close()

            End Using
        Catch ex As Exception 
        End Try
    End Sub

    Protected Sub btbSaveColumn_Click(sender As Object, e As EventArgs) Handles btbSaveColumn.Click
        Insert_Column()
    End Sub       
End Class

Buuut,当我点击按钮时,它不会创建列。当我在SQL Server Management Studio中进行测试时,它可以工作!

我不知道问题所在。

感谢您的帮助!

0 个答案:

没有答案