SQL命令在C#窗口窗体应用程序中不工作

问题描述:

我想通过我的Windows窗体应用程序(使用C#构建)在数据库的表中添加一个新列。SQL命令在C#窗口窗体应用程序中不工作

我已经创建了一个方法CreateFieldNameInTableData(字符串FieldName,字符串TableName),它传递变量'FieldName'的名称,该名称是要添加到表'TableName'的列的名称,可以是由用户指定。

这种方法,试图将列添加到表中的代码如下:

private void CreateFieldNameInTableData(string FieldName, string AssetTypeCode) 
     { 
      SqlConnection conn = new SqlConnection(SQLConnectionString); 
      SqlCommand comm = null; 
      try 
      { 
       try 
       { 
        comm = conn.CreateCommand(); 
        comm.CommandText = "ALTER TABLE [AS_" + TableName + "_DATA] ADD " + FieldName + " VARCHAR(30)"; 
        comm.CommandType = CommandType.Text; 
        comm.CommandTimeout = 30; //30 seconds 
        conn.Open(); 
       } 
       catch (SqlException err) 
       { 
        MessageBox.Show("SqlException Error : " + err.Message.ToString()); 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Exception Error : " + ex.Message.ToString()); 
      } 
      finally 
      { 
       conn.Close(); 
      } 
     } 

当我使用Server Management Studio中相同的SQL脚本,它是成功创建在列表AS_TableName_DATA,但是当我尝试使用C#执行相同的操作时,它不会抛出任何错误,但是在检查之后,该表没有要创建的新列。

任何帮助......怎么了?

P.S.我也检查了SQLConnectionString,它也连接到正确的数据库。

+7

您还没有执行你的命令。在'try'块末尾添加'cmd.ExecuteNonQuery();' – Habib 2014-10-28 14:14:35

+1

也在查询中使用'QUOTENAME'请参阅:这篇文章:http://*.com/questions/20719449/c-sharp-alter-table -and-add-a-column-programmatically -asp-net-sql-server – Habib 2014-10-28 14:15:53

+0

@Habib你不能参数化DML – 2014-10-28 14:19:06

如@TarasB所示,comm.ExecuteNonQuery()丢失,SQL查询未由c#SQLClient执行。回顾这个错误感觉就像是一个'学校男孩错误'。

最后工作的代码如下:

  try 
      { 
       comm = conn.CreateCommand(); 
       comm.CommandText = "ALTER TABLE [AS_" + TableName + "_DATA] ADD [" + FieldName + "] VARCHAR(30)"; 
       comm.CommandType = CommandType.Text; 
       comm.CommandTimeout = 120; //120 seconds 
       conn.Open(); 
       comm.ExecuteNonQuery(); 
      } 
      catch (SqlException err) 
      { 
       MessageBox.Show("SqlException Error : " + err.Message.ToString()); 
      }