我有了功能的SqlDB.dll:SqlDataReader的出現InvalidOperationException
public SqlDataReader getEnumValues(int enumId)
{
SqlDataReader reader = null;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command =
new SqlCommand(
"SELECT * FROM [EnumValue] WHERE enumId LIKE '" + enumId + "';",
connection);
reader = command.ExecuteReader();
//if(reader.Read())
// Debug.WriteLine("Inside sqlDb->getEnumValues command = " + command.CommandText + " reader[name] = " + reader["name"].ToString() + " reader[value] = " + reader["value"].ToString() + " reader[description] = " + reader["description"].ToString());
}
//reader.Close();
return reader;
}
正如你可以看到我已經嘗試返回之前關閉的讀者,也是我讀出的數據內,它的確定。 我使用的功能是這樣的:
using (SqlDataReader getEnumValuesReader = (SqlDataReader)getEnumValues.Invoke(sqlDB, getEnumValuesForEnumParam))
{
Debug.WriteLine("Success getEnumValues -- ");
if (getEnumValuesReader.HasRows)
{
while (getEnumValuesReader.Read()) //Loop throw all enumValues and add them to current enum
{
try
{
values.Add(new Model.EnumValue(getEnumValuesReader["name"].ToString(), getEnumValuesReader["value"].ToString(), getEnumValuesReader["description"].ToString()));
Debug.WriteLine("Value[0].name = " + values[0].Name);
}
catch (Exception ex)
{
Debug.WriteLine("Error in building new EnumValue: " + ex.Message);
}
}
}
}
和我越來越類型的異常「System.InvalidOperationException」
我猜它是與SqlDataReader的傳遞。
[SQL注入警報](http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - 您應該**不**將您的SQL語句連接在一起 - 使用**參數化查詢**來代替以避免SQL注入 –
我根本沒有安全問題,它沒有任何用戶\其他開發人員\未來的計劃,但感謝您的答案 – Yogevnn
如果此代碼用於網站 - **任何這些網站都有被SQL注入攻擊的高度危險。只是讓我知道這些網站是什麼,所以我可以確保永遠不會訪問他們中的任何一個.... –