내가 기능을 가진 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 Injection alert] (http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - SQL 문을 연결하지 않아야합니다 ** - 대신에 SQL 삽입을 피하기 위해 ** 매개 변수화 된 쿼리 **를 사용하십시오. –
보안 문제가 전혀 없으며 향후 다른 사용자 \ 다른 개발자 \ 계획이 없지만 답변 해 주셔서 감사합니다. – Yogevnn
이 코드를 사용하는 경우 웹 사이트 - ** 모든 웹 사이트 중 **는 SQL 삽입으로 악용 될 위험이 높습니다. 그냥 내가 어떤 웹 사이트를 방문하는지 결코 알 수 없으므로 아무 것도 방문하지 않도록 할 수 있습니다 .... –