Foros del Web » Programando para Internet » ASPX (.net) »

Asp.Net Con Oracle

Estas en el tema de Asp.Net Con Oracle en el foro de ASPX (.net) en Foros del Web. Tengo un problema a la hora de hacer una operacion desde el ASP.NET con Oracle no me deja hacer operacion algun aqui les dejo los ...
  #1 (permalink)  
Antiguo 03/02/2008, 12:12
Avatar de Mafesa83  
Fecha de Ingreso: marzo-2007
Ubicación: Villahermosa, Tabasco
Mensajes: 43
Antigüedad: 17 años, 1 mes
Puntos: 0
Pregunta Asp.Net Con Oracle

Tengo un problema a la hora de hacer una operacion desde el ASP.NET con Oracle no me deja hacer operacion algun aqui les dejo los pasos que estoy utilizando si alguien pudiera encontrar mi error se lo agradeceria.

protected void Aceptar_Click(object sender, EventArgs e)
{
//creo mi cadena de conexion que se va a llamar ParamConexion que incluye todos
//Los parametros de una conexion de la base de datos.
String ParamConexion = "Data Source=XE;Persist Security Info=False;User ID=equipo2;Password=eq2;Unicode=True";

//declaro la nueva conexion a la base de datos de que voy a usar
System.Data.OracleClient.OracleConnection MyConexion = new System.Data.OracleClient.OracleConnection();

//paso los parametros de conexion a la conexion del ASP con ORACLE
MyConexion.ConnectionString = ParamConexion;

// Declaro una variable de tipo command del oracle
System.Data.OracleClient.OracleCommand MyCommand = new System.Data.OracleClient.OracleCommand();


//Declaro mis parametros que voy a utilizar
System.Data.OracleClient.OracleParameter Claveq;
System.Data.OracleClient.OracleParameter Nombreq;

//Instanceo mis parametros
Claveq = new System.Data.OracleClient.OracleParameter();
Nombreq = new System.Data.OracleClient.OracleParameter();

//Asigna a los parámetros los valores que serán almacenados
Claveq.OracleType = System.Data.OracleClient.OracleType.Int32;
Nombreq.OracleType = System.Data.OracleClient.OracleType.VarChar;

//le doy nombre a los parametros
Claveq.ParameterName = "Param1";
Nombreq.ParameterName = "Param2";

//les digo de que tipo de parametros van a hacer.
Claveq.Value = Int32.Parse(Nombres.Text.ToString());
Nombreq.Value = Paternos.Text.ToString();


//Limpio los parametros que voy a utilizar evitando alguna basura...
MyCommand.Parameters.Clear();

//agrego los parametros para la ejecucion del comando
MyCommand.Parameters.Add(Claveq);
MyCommand.Parameters.Add(Nombreq);

//agrego el comando a ser ejecutado
MyCommand.CommandText = "insert into especialidades(cve_especialidades,Nombre)values(Pa ram1,Param2)";

//simplemente y sencillamente abro la conexion ejecuto el comando
//y luego cierro la conexion
MyConexion.Open();
MyCommand.ExecuteNonQuery();
MyConexion.Close();

}


Se lo agraceria mucho si me pudieran echar la mano. mi correo es [email protected]
  #2 (permalink)  
Antiguo 04/02/2008, 05:37
Avatar de Javier Santamaria  
Fecha de Ingreso: julio-2007
Mensajes: 296
Antigüedad: 16 años, 9 meses
Puntos: 1
Re: Asp.Net Con Oracle

Te da algun error? Cual es el problema?, el codigo parece estar bien.
  #3 (permalink)  
Antiguo 05/02/2008, 00:44
Avatar de Mafesa83  
Fecha de Ingreso: marzo-2007
Ubicación: Villahermosa, Tabasco
Mensajes: 43
Antigüedad: 17 años, 1 mes
Puntos: 0
Marca el error de: invalidOperationExeption

Gracias por tu tiempo Javier Santamaria.

y no marca ningun error a la hora de la compilacion es a la hora de la ejecucion.
cuando ejecuto el boton es cuando el Visual Web Developer 2005 Express marca el errorcito y empieza la depuracion de la aplicacion.

El còdigo de usuario no controlò invalidOperationExeption
operaciòn no valida; se ha terminado la conexion
Sugerencias para solucionar problemas

eso es todo lo que me manda y lo e investigado y no encuentro ayuda y mucho menos un ejemplo amplio y practico de facil entendimiento si me puedes ayudar te lo agradeceria.
  #4 (permalink)  
Antiguo 05/02/2008, 05:32
Avatar de Javier Santamaria  
Fecha de Ingreso: julio-2007
Mensajes: 296
Antigüedad: 16 años, 9 meses
Puntos: 1
Re: Asp.Net Con Oracle

Sabes en que linea te da ese error?. Depuralo paso a paso para ver en que linea te salta el error.

Saludos
  #5 (permalink)  
Antiguo 05/02/2008, 10:59
Avatar de Mafesa83  
Fecha de Ingreso: marzo-2007
Ubicación: Villahermosa, Tabasco
Mensajes: 43
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Asp.Net Con Oracle

El error me lo marca en el

MyCommand.ExecuteNonQuery();
en esta linea es donde me marca el error o la exepcion que hace que no me permita insertar datos en la DB
  #6 (permalink)  
Antiguo 06/02/2008, 04:41
Avatar de Javier Santamaria  
Fecha de Ingreso: julio-2007
Mensajes: 296
Antigüedad: 16 años, 9 meses
Puntos: 1
Re: Asp.Net Con Oracle

A lo mejor no tiene nada que ver , pero prueba a cambiar esta linea:

Código:
MyCommand.CommandText = "insert into especialidades(cve_especialidades,Nombre)values(Pa ram1,Param2)";
//este comentario es para que no se corte la linea, no hagas caso
Por esta:
Código:
MyCommand.CommandText = "insert into especialidades values (Pa ram1,Param2)";
Si esto no funciona a lo mejor es que no tienes permisos para insertar y por eso te da un eror de operacion no valida.

Ya nos cuentas. Todo el codigo parece estar bien.
  #7 (permalink)  
Antiguo 06/02/2008, 23:57
Avatar de Mafesa83  
Fecha de Ingreso: marzo-2007
Ubicación: Villahermosa, Tabasco
Mensajes: 43
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Asp.Net Con Oracle

Gracias por la aportacion... la verdad estoy contento de que me puedas ayudar... y de los permisos yo cree un nuevo usuario con las misma caracteristicas de un administrador en oracle y por eso no hay problema. ya lo voy a intentar y te digo que paso.
  #8 (permalink)  
Antiguo 07/02/2008, 01:29
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Re: Asp.Net Con Oracle

[CODE]
MyCommand.CommandText = "insert into especialidades(cve_especialidades,Nombre)values(Pa ram1,Param2)";
[CODE]


Me extraña que esto te funcione.... el values tienes que ponerlo con espacios.

Intenta ejecutar una sentencia INSERT a pelo desde el .NET, para descartar errores del provedor.

Un saludo.
__________________
Charlie.
  #9 (permalink)  
Antiguo 07/02/2008, 19:55
Avatar de Mafesa83  
Fecha de Ingreso: marzo-2007
Ubicación: Villahermosa, Tabasco
Mensajes: 43
Antigüedad: 17 años, 1 mes
Puntos: 0
De acuerdo Re: Asp.Net Con Oracle

ya lo pude lograr, gracias por sus comentarios y aportaciones fueron de mucha ayuda mil gracias
  #10 (permalink)  
Antiguo 08/02/2008, 03:00
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Re: Asp.Net Con Oracle

Dinos que fue amigo... asi todos podremos aprender más, ¿No crees?
__________________
Charlie.
  #11 (permalink)  
Antiguo 27/04/2008, 12:15
Avatar de Mafesa83  
Fecha de Ingreso: marzo-2007
Ubicación: Villahermosa, Tabasco
Mensajes: 43
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Asp.Net Con Oracle

La verdad, mil disculpas por la tardanza, y no me dio tiempo de escribir la respuesta, dado que todavia no eh terminado el trabajo, Mientras encuentro otra cosa le termino de platicar en que termino este desenlace.


Existen 3 formas para poder hacer estas operaciones de INSERT, DELETE, UPDATE.

1.- Cadena de texto
2.- Usando parametros
3.- Llamando procedimientos

solo voy a poner un ejemplo muy sencillo para su explicacion.

1.- Cadenas de Texto
solo utilizar los datos que vas a utilizar para la insercion.
ej.
MyCommand.CommandText="DELETE FROM TABLA WHERE '"+valor.Text.ToString()+"'";
MyCommand.ExecuteNonQuery();


2.- Usando Parametros
es lo que habia hecho primero.

/Declaro mis parametros que voy a utilizar
System.Data.OracleClient.OracleParameter Nombreq;

//Instanceo mis parametros
Nombreq = new System.Data.OracleClient.OracleParameter();

//Asigna a los parámetros los valores que serán almacenados
Nombreq.OracleType = System.Data.OracleClient.OracleType.VarChar;

//le doy nombre a los parametros
Nombreq.ParameterName = "Param1";

//les digo de que tipo de parametros van a hacer.
Nombreq.Value = Paternos.Text.ToString();

//Limpio los parametros que voy a utilizar evitando alguna basura...
MyCommand.Parameters.Clear();

//agrego los parametros para la ejecucion del comando
MyCommand.Parameters.Add(Nombreq);

//agrego el comando a ser ejecutado
MyCommand.CommandText = "insert into especialidades(Nombre)values(:Param2)";
MyCommand.ExecuteNonQuery();

3.- Llamando Procedimientos
El procedimiento debe esta ya compilado y listo para usarse, en este caso es para las operaciones mencionadas anteriormente.

MyCommand.CommandText="CALL PROCEDIMIENTO1("+Valor1.Text.ToString()+")"
MyCommand.ExecuteNonQuery();

ahora bien, asi como estan en caso de tener un error, les marcarian errores desde el Compilador como les mostraba
"El còdigo de usuario no controlò invalidOperationExeption, operaciòn no valida; se ha terminado la conexion Sugerencias para solucionar problemas".

esto es porque no utilizaba los:
TRY
{MyConexion.Open();
}
CATCH(Exception ex)
{MessageBox.Show(ex.Mesage,"encabezado",MessageBut tons.OK);
}
FINALLY
{MyConexion.Close();
}

el catch recoge el error y ya no se saca del programa sino que solo te lo manda en un cuadro de dialogo.

saludos espero que sirva de algo,
  #12 (permalink)  
Antiguo 27/04/2008, 12:18
Avatar de Mafesa83  
Fecha de Ingreso: marzo-2007
Ubicación: Villahermosa, Tabasco
Mensajes: 43
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Asp.Net Con Oracle

Cita:
Iniciado por Javier Santamaria Ver Mensaje
A lo mejor no tiene nada que ver , pero prueba a cambiar esta linea:

Código:
MyCommand.CommandText = "insert into especialidades(cve_especialidades,Nombre)values(Pa ram1,Param2)";
//este comentario es para que no se corte la linea, no hagas caso
Por esta:
Código:
MyCommand.CommandText = "insert into especialidades values (Pa ram1,Param2)";
Si esto no funciona a lo mejor es que no tienes permisos para insertar y por eso te da un eror de operacion no valida.

Ya nos cuentas. Todo el codigo parece estar bien.


Con respecto a la forma de mandar a llamar los parametros no es como me lo planteastes sino mas que bien de la siguiiente forma
ej.
Insert Into from tabla(Campo1, Campo2) Values(:Param1,:Param2);
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 21:15.