Мне нужна помощь, когда я получаю данные процедуры BD (Oracle).Я не знаю, как обращаться с типом данных date time, int и т. Д. Я знаю только, что делать со строками
public static Player_E getPlayer(string select)
{
Player_E player = new Player_E();
DateTime? dateTime = new DateTime();
conexion = bd.ConexionWithDB();
orden.CommandText = "CONSULTAS.obtener_jugador";
orden.CommandType = CommandType.StoredProcedure;
orden.Parameters.Add("v_nombre", OracleDbType.Varchar2, 60).Value = select;
orden.Parameters.Add("jugadores_dev", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);
orden.Parameters.Add("c2blob", OracleDbType.Blob).Direction = ParameterDirection.Output;
orden.Connection = conexion;
orden.ExecuteNonQuery();
OracleDataReader dr = ((OracleRefCursor)orden.Parameters["jugadores_dev"].Value).GetDataReader();
dr.Read();
//tbNombre.Text = dr["c1"].ToString();
OracleBlob blob = (OracleBlob)orden.Parameters["c2blob"].Value;
byte[] filedata = null;
if (blob.Length != 0)
{
filedata = new byte[blob.Length];
}
//these are attempts that I have been making
//dateTime = Convert.ToDateTime(dr["d1"].ToString());
//dateTime = Convert.ToDateTime(dr.GetOrdinal("d1").ToString());
//dateTime = dr["d1"].ToString().Length > 0 ? DateTime.Parse(dr["d1"].ToString()) : DateTime.MinValue;
//dateTime = DateTime.ParseExact(dr["d1"].ToString(),"dd/MM/yyyy",System.Globalization.CultureInfo.CreateSpecificCulture("es-ES"));
player = new Player_E (dr["c1"].ToString(), dr["c2"].ToString(), dr["c3"].ToString(), dateTime, dr["c4"].ToString(), filedata);
//dr.Dispose();
//orden.Dispose();
conexion.Close();
return player;
}
Вот метод, в котором я вызываю для отправки объект Player со значениями.
Редактировать: это процедура:
ПРОЦЕДУРА OBTENER_JUGADOR (v_nombre VARCHAR2, est_jugador OUT estructura_devuelta, C2BLOB OUT BLOB)
IS
BEGIN
INSERT INTO TMP_ESTRUCTURA (c1,
c2,
c3,
d1,
c4)
SELECT NOMBRE,
DIRECCION,
PUESTO_HAB,
FECHA_NAC,
EQUIPO_JUGADOR
FROM jugador
WHERE nombre = v_nombre;
SELECT FOTO_JUGADOR
INTO C2BLOB
FROM jugador
WHERE nombre = v_nombre;
OPEN est_jugador FOR SELECT * FROM TMP_ESTRUCTURA;
EXCEPTION
WHEN OTHERS
THEN
raise_application_error (
-20100,
'El jugador ' || v_nombre || ' no existe' || SQLERRM);
END OBTENER_JUGADOR;
Спасибо всем