2012-05-17 53 views
0

這是我的代碼。我不能夠設置表名變量,它拋出一個異常 必須聲明表變量「@tablename」無法使用dataadapter設置參數以選擇命令

public DataTable getAllDataFromTable(String TableName) 
     { 

      cmd.CommandText = "select * from @TableName"; 
      cmd.Parameters.AddWithValue("@TableName", TableName); 
      da.SelectCommand = cmd; 
      da.Fill(dt); 
      return dt; 

     } 

回答

0

你不能以那種方式使用參數。實現你正在尋找的最好方法是使用一個string.Format()方法來創建你的select語句。唯一真正的缺點是你打開SQL注入的方法。

公共數據表getAllDataFromTable(字符串表名) {

 cmd.CommandText = string.Format("select * from {0}", TableName)"; 
     da.SelectCommand = cmd; 
     da.Fill(dt); 
     return dt; 

    } 

這裏是一個類似的線程。

Table name and table field on SqlParameter C#?

+0

好吧,這是否意味着我可以使用參數僅用於where子句中的變量? – Charu

+1

@Charu是的,參數是將數據傳遞到您的SQL查詢,並不會修改您的實際SQL查詢。現在再次僅用於數據,所以列名,表名,數據庫名稱將不起作用。乾杯.. – Nico