Мой вопрос, который похож на this one, как я могу использовать OracleDataReader для извлечения всех полей для данной записи? В настоящее время я использую этот метод, который возвращает только одно значение столбца в то время:Как получить все поля для данной записи с помощью OracleDataReader?
public string Select_File(string filename, string subdirectory, string envID)
{
Data_Access da = new Data_Access();
OracleConnection conn = da.openDB();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM EIP_Deployment_Files"
+ " WHERE Filename ='" + filename + "'"
+ " AND Subdirectory = '" + subdirectory + "'"
+ " AND Environment_ID = '" + envID + "'";
cmd.CommandType = CommandType.Text;
string x;
OracleDataReader dr = cmd.ExecuteReader();
if (dr.HasRows) // file exists in DB
{
dr.Read();
x = dr.GetString(2).ToString(); // return baseline filename (index 2)
}
else
{
x = "New File";
}
cmd.Dispose();
da.CloseDB(conn);
return x;
}
Я уверен, что этот метод далек от совершенства и госзакупки будут быстры, чтобы указать, что из (я был в основном, данный мой руководитель, поскольку у меня не было опыта в ASP.NET), но все, что мне действительно волнует, это то, что он работает. Мой вопрос: как его можно изменить, чтобы вернуть все поля для данной записи?
Поля будут либо типами данных VARCHAR2, CHAR, либо DATE (если это имеет значение), а некоторые из этих значений могут быть пустыми. Я думаю, что могу преобразовать их в строки и вернуть их в список?
Примечание: 'cmd.CommandText' уязвим для инъекционных атак – rdev5