Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASPX (.net) (http://www.forosdelweb.com/f78/)
-   -   Asp.Net Con Oracle (http://www.forosdelweb.com/f78/asp-net-con-oracle-554035/)

Mafesa83 03/02/2008 12:12

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]

Javier Santamaria 04/02/2008 05:37

Re: Asp.Net Con Oracle
 
Te da algun error? Cual es el problema?, el codigo parece estar bien.

Mafesa83 05/02/2008 00:44

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.

Javier Santamaria 05/02/2008 05:32

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

Mafesa83 05/02/2008 10:59

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

Javier Santamaria 06/02/2008 04:41

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.

Mafesa83 06/02/2008 23:57

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.

chcma 07/02/2008 01:29

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.

Mafesa83 07/02/2008 19:55

Re: Asp.Net Con Oracle
 
ya lo pude lograr, gracias por sus comentarios y aportaciones fueron de mucha ayuda mil gracias:-)

chcma 08/02/2008 03:00

Re: Asp.Net Con Oracle
 
Dinos que fue amigo... asi todos podremos aprender más, ¿No crees?

Mafesa83 27/04/2008 12:15

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,

Mafesa83 27/04/2008 12:18

Re: Asp.Net Con Oracle
 
Cita:

Iniciado por Javier Santamaria (Mensaje 2275858)
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);


La zona horaria es GMT -6. Ahora son las 19:13.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.