@a1是列名传递参数可能不行
但这么写可以:
dim a1 as string
Dim lect As String = "update tab set " + a1 + "= @a2 where tz01='2'"
a1="col1"
MyCommand.Parameters.Add(New SqlParameter("@a2", SqlDbType.NVarChar, 10))     '@a2 为传递的更新的值
   MyCommand.Parameters("@a2").Value = text1.Text.ToString
   MyCommand.ExecuteNonQuery()
------------------------------
这么写可能也行,我没有测试:Dim MyCommand As SqlComman
   Dim lect As String = " declare Str varchar(80) select Str='update tab set'+ @a1+'='+ @a2 'where tz01='+''2'' exec str"
   MyCommand = New SqlCommand(lect, cla.myConnection)
   MyCommand.Parameters.Add(New SqlParameter("@a1", SqlDbType.NVarChar, 10))    '@a1 为传递的需更新表的列名
   MyCommand.Parameters("@a1").Value = lable1.text.tostring
   MyCommand.Parameters.Add(New SqlParameter("@a2", SqlDbType.NVarChar, 10))     '@a2 为传递的更新的值
   MyCommand.Parameters("@a2").Value = text1.Text.ToString
   MyCommand.ExecuteNonQuery()

解决方案 »

  1.   

    大象说的也许行,我在企业管理器试了一下,
    CREATE PROCEDURE [OWNER].[PROCEDURE NAME] AS
    update mytable set @a1=@a2这样它报错是:@a2没有定义,可见过了@a1,就是说不能使用列参数。
      

  2.   

    declare @t1 varchar(10)
    declare @t2 varchar(10)
    select @t1= 'name'
    select @t2 = 'type'
    declare @sql varchar(30)
    select @sql ='update a set '+@t1+ ' = '+ @t2 
    exec(@sql)
      

  3.   

    我试过,企业管理器中没有问题,但asp.net中不行.
      

  4.   

    Dim MyCommand As SqlComman
       Dim lect As String = "update tab set  "&lable1.text.tostring&"= @a2 where tz01='2'"    //这列在VB.NET中可以取得值。
       MyCommand = New SqlCommand(lect, cla.myConnection)
         MyCommand.Parameters.Add(New SqlParameter("@a2", SqlDbType.NVarChar, 10))     '@a2 为传递的更新的值
       MyCommand.Parameters("@a2").Value = text1.Text.ToString
       MyCommand.ExecuteNonQuery()