我有一个问题,类似于这个,就是如何使用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
容易受到注入攻击的影响。 - Matt Borja