0
我需要從指定表中獲取所有數據,並且我不需要強類型數據,因此我將它作爲數據表返回。從變量表中獲取數據並返回爲數據表c#
public DataTable GetByTypeName(String t)
{
var type = Type.GetType(t);
var dt = new DataTable();
using (var sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["MasterPlanConnectionString"].ConnectionString))
{
var sqlComm = new SqlCommand("SELECT * FROM @table", sqlConn);
sqlComm.Parameters.AddWithValue("@table", type.Name);
sqlConn.Open();
var dr = sqlComm.ExecuteReader(CommandBehavior.CloseConnection);
dt.Load(dr);
}
return dt;
}
當我運行此我得到的錯誤
System.Data.SqlClient.SqlException was unhandled by user code
Message=Must declare the table variable "@table".
我想不通爲什麼,因爲我已經聲明@table這是行不通的。我知道這種方法對一些不良的sql攻擊是開放的,因此我打算加入一些保護措施,確切地說可以查詢哪些類型。
+1。像往常一樣,簡單的解決方案最好! – 2011-05-13 02:44:46
+1 OP的嘗試方式將永遠不會工作,因爲這不是參數的工作方式 – 2011-05-13 02:54:35
乾杯,希望通過確保類型必須實現特定的接口來緩解sql注入,最壞的情況下您可以查看用於不同審計的審計數據表格比指定 – 2011-05-13 03:01:04