2014-10-28 80 views
1

我想通過我的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://stackoverflow.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

回答

2

如@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()); 
      } 
相關問題