elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Ayuda con Programa C# Conexion a Oracle
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con Programa C# Conexion a Oracle  (Leído 4,649 veces)
trukologo

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda con Programa C# Conexion a Oracle
« en: 29 Junio 2012, 21:29 pm »

Estimados:
este es mi primer post y es para pedir ayuda con un programa que no me funca y ya lo he revisado mil veces y no se por que, les cuento es un programa para insertar clientes en una tabla con distintos datos, la conexion me funciona para la tratar de insertar los datos me genera el error "ORA-00936: missing expression", este es el codigo:

Código
  1. public static bool Guardar(Cliente _cliente)
  2.        {
  3.            try
  4.            {
  5.                Conexion conexion = new Conexion();
  6.                OracleConnection sqlConnection = conexion.Conectar();
  7.  
  8.                if (sqlConnection != null)
  9.                {
  10.                    OracleCommand comando = sqlConnection.CreateCommand();
  11.                    comando.CommandText = @"INSERT INTO VALIDACION(Empresa,
  12. FechaEnvio,
  13. Fecha,
  14. Cuenta,
  15. FonoContacto,
  16. CuotasPorVencer,
  17. CuotasVencidas,
  18. MontoDeuda,
  19. ValorCuotas,
  20. MontoCapital,
  21. MontoInteres,
  22. MontoReprogramar,
  23. NumeroCuotas,
  24. ValorNuevaCuota,
  25. PrimerVcto,
  26. TasaInteres,
  27. CuotaDiferidad,
  28. EjecutivoExterno,
  29. TramoProvision,
  30. Producto,
  31. TipoCartera,
  32. Ejecutivo,
  33. EstadoRep,
  34. MotivoRechazo,
  35. Correo,
  36. NuevoTelefono,
  37. NuevaDireccion,
  38. Observacion,
  39. RebajadoEnTC,
  40. Modificacion,
  41. Codigo,
  42. Supervisor,
  43. Ite,
  44. ValorRescate) VALUES(@Empresa,
  45. @FechaEnvio,
  46. @Fecha,
  47. @Cuenta,
  48. @FonoContacto,
  49. @CuotasPorVencer,
  50. @CuotasVencidas,
  51. @MontoDeuda,
  52. @ValorCuotas,
  53. @MontoCapital,
  54. @MontoInteres,
  55. @MontoReprogramar,
  56. @NumeroCuotas,
  57. @ValorNuevaCuota,
  58. @PrimerVcto,
  59. @TasaInteres,
  60. @CuotaDiferidad,
  61. @EjecutivoExterno,
  62. @TramoProvision,
  63. @Producto,
  64. @TipoCartera,
  65. @Ejecutivo,
  66. @EstadoRep,
  67. @MotivoRechazo,
  68. @Correo,
  69. @NuevoTelefono,
  70. @NuevaDireccion,
  71. @Observacion,
  72. @RebajadoEnTC,
  73. @Modificacion,
  74. @Codigo,
  75. @Supervisor,
  76. @Ite,
  77. @ValorRescate)";
  78.                    comando.CommandType = CommandType.Text;
  79.                    comando.Parameters.Add("@Empresa",_cliente.Empresa);
  80.                    comando.Parameters.Add("@FechaEnvio",_cliente.FechaEnvio);
  81.                    comando.Parameters.Add("@Fecha",_cliente.Fecha);
  82.                    comando.Parameters.Add("@Cuenta",_cliente.Cuenta);
  83.                    comando.Parameters.Add("@FonoContacto",_cliente.FonoContacto);
  84.                    comando.Parameters.Add("@CuotasPorVencer",_cliente.CuotasPorVencer);
  85.                    comando.Parameters.Add("@CuotasVencidas",_cliente.CuotasVencidas);
  86.                    comando.Parameters.Add("@MontoDeuda",_cliente.MontoDeuda);
  87.                    comando.Parameters.Add("@ValorCuotas",_cliente.ValorCuotas);
  88.                    comando.Parameters.Add("@MontoCapital",_cliente.MontoCapital);
  89.                    comando.Parameters.Add("@MontoReprogramar",_cliente.MontoReprogramar);
  90.                    comando.Parameters.Add("@NumeroCuotas",_cliente.NumeroCuotas);
  91.                    comando.Parameters.Add("@ValorNuevaCuota",_cliente.ValorNuevaCuota);
  92.                    comando.Parameters.Add("@PrimerVcto",_cliente.PrimerVcto);
  93.                    comando.Parameters.Add("@TasaInteres",_cliente.TasaInteres);
  94.                    comando.Parameters.Add("@CuotaDiferidad",_cliente.CuotaDiferidad);
  95.                    comando.Parameters.Add("@EjecutivoExterno",_cliente.EjecutivoExterno);
  96.                    comando.Parameters.Add("@TramoProvision",_cliente.TramoProvision);
  97.                    comando.Parameters.Add("@Producto",_cliente.Producto);
  98.                    comando.Parameters.Add("@TipoCartera",_cliente.TipoCartera);
  99.                    comando.Parameters.Add("@Ejecutivo",_cliente.Ejecutivo);
  100.                    comando.Parameters.Add("@EstadoRep",_cliente.EstadoRep);
  101.                    comando.Parameters.Add("@MotivoRechazo",_cliente.MotivoRechazo);
  102.                    comando.Parameters.Add("@Correo",_cliente.Correo);
  103.                    comando.Parameters.Add("@NuevoTelefono",_cliente.NuevoTelefono);
  104.                    comando.Parameters.Add("@NuevaDireccion",_cliente.NuevaDireccion);
  105.                    comando.Parameters.Add("@Observacion",_cliente.Observacion);
  106.                    comando.Parameters.Add("@RebajadoEnTC",_cliente.RebajadoEnTC);
  107.                    comando.Parameters.Add("@Modificacion",_cliente.Modificacion);
  108.                    comando.Parameters.Add("@Codigo",_cliente.Codigo);
  109.                    comando.Parameters.Add("@Supervisor",_cliente.Supervisor);
  110.                    comando.Parameters.Add("@Ite",_cliente.Ite);
  111.                    comando.Parameters.Add("@ValorRescate",_cliente.ValorRescate);
  112.                    comando.ExecuteNonQuery();
  113.                    conexion.Close();
  114.                    return true;
  115.                }
  116.                return false;
  117.            }
  118.            catch (Exception)
  119.            {
  120.                return false;
  121.            }
  122.        }
  123.  
  124.  
  125.  

si me pueden ayudar, gracias.


En línea

MaLkAvIaN_NeT

Desconectado Desconectado

Mensajes: 213


MaLkAvIaN_NeT


Ver Perfil WWW
Re: Ayuda con Programa C# Conexion a Oracle
« Respuesta #1 en: 30 Junio 2012, 22:37 pm »

es recomendable que crees el store procedure en la base de datos.


En línea

a por las buenas ideas
trukologo

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda con Programa C# Conexion a Oracle
« Respuesta #2 en: 20 Julio 2012, 21:29 pm »

es recomendable que crees el store procedure en la base de datos.

si tiene procedimiento de almacenado, pero lo yo trato de hacer es insertar los datos que obtengo del programa (vía windows forms).

:(

de hecho modifique el programa y me sale lo mismo:

Código
  1. public static bool Guardar(Cliente _cliente)
  2.        {
  3.            try
  4.            {
  5.                Conexion conexion = new Conexion();
  6.                OracleConnection sqlConnection = conexion.Conectar();
  7.  
  8.                if (sqlConnection != null)
  9.                {
  10.                    OracleCommand comando = sqlConnection.CreateCommand();
  11.                    comando.CommandText = @"INSERT INTO VALIDACION
  12. (EMPRESA,FECHAENVIO,
  13. FECHA,
  14. CUENTA,
  15. FONOCONTACTO,
  16. CUOTASPORVENCER,
  17. CUOTASVENCIDAS,
  18. MONTODEUDA,
  19. VALORCUOTAS,
  20. MONTOCAPITAL,
  21. MONTOINTERES,
  22. MONTOREPROGRAMAR,
  23. NUMEROCUOTAS,
  24. VALORNUEVACUOTA,
  25. PRIMERVCTO,
  26. TASAINTERES,
  27. CUOTADIFERIDAD,
  28. EJECUTIVOEXTERNO,
  29. TRAMOPROVISION,
  30. PRODUCTO,
  31. TIPOCARTERA,
  32. EJECUTIVO,
  33. ESTADOREP,
  34. MOTIVORECHAZO,
  35. CORREO,
  36. NUEVOTELEFONO,
  37. NUEVADIRECCION,
  38. OBSERVACION,
  39. REBAJADOENTC,
  40. MODIFICACION,
  41. CODIGO,
  42. SUPERVISOR,
  43. ITE,
  44. VALORRESCATE) VALUES(" +  _cliente.Empresa + "','"
  45. +  _cliente.FechaEnvio + "','"
  46. +  _cliente.Fecha + "','"
  47. +  _cliente.Cuenta + "','"
  48. +  _cliente.FonoContacto + "','"
  49. +  _cliente.CuotasPorVencer + "','"
  50. +  _cliente.CuotasVencidas + "','"
  51. +  _cliente.MontoDeuda + "','"
  52. +  _cliente.ValorCuotas + "','"
  53. +  _cliente.MontoCapital + "','"
  54. +  _cliente.MontoInteres + "','"
  55. +  _cliente.MontoReprogramar + "','"
  56. +  _cliente.NumeroCuotas + "','"
  57. +  _cliente.ValorNuevaCuota + "','"
  58. +  _cliente.PrimerVcto + "','"
  59. +  _cliente.TasaInteres + "','"
  60. +  _cliente.CuotaDiferidad + "','"
  61. +  _cliente.EjecutivoExterno + "','"
  62. +  _cliente.TramoProvision + "','"
  63. +  _cliente.Producto + "','"
  64. +  _cliente.TipoCartera + "','"
  65. +  _cliente.Ejecutivo + "','"
  66. +  _cliente.EstadoRep + "','"
  67. +  _cliente.MotivoRechazo + "','"
  68. +  _cliente.Correo + "','"
  69. +  _cliente.NuevoTelefono + "','"
  70. +  _cliente.NuevaDireccion + "','"
  71. +  _cliente.Observacion + "','"
  72. +  _cliente.RebajadoEnTC + "','"
  73. +  _cliente.Modificacion + "','"
  74. +  _cliente.Codigo + "','"
  75. +  _cliente.Supervisor + "','"
  76. +  _cliente.Ite + "','"
  77. +  _cliente.ValorRescate + "')";
  78.  
  79.                    comando.ExecuteNonQuery();
  80.                    conexion.Close();
  81.                    return true;
  82.                }
  83.                return false;
  84.            }
  85.            catch (Exception)
  86.            {
  87.                return false;
  88.            }
  89.        }
  90.  
« Última modificación: 20 Julio 2012, 21:32 pm por trukologo » En línea

.::IT::.

Desconectado Desconectado

Mensajes: 167



Ver Perfil
Re: Ayuda con Programa C# Conexion a Oracle
« Respuesta #3 en: 26 Julio 2012, 11:15 am »

Primero que nada debes bajarte el conector de Oracle para .net desde :
http://www.oracle.com/technetwork/topics/dotnet/index-085163.html

Ya que el de Windows ya esta algo viejo mirar:

http://msdn.microsoft.com/es-es/library/77d8yct7%28v=vs.110%29.aspx

según eso dice:
The types in System.Data.OracleClient are deprecated. The types are supported in version 4 of the .NET Framework but will be removed in a future release. Microsoft recommends that you use a third-party Oracle provider.

Ahora el motivo de tu error es que en lugar de "@" para los parametros se usa los ":"

ejemplo:
Código
  1. String commandString = "INSERT INTO Users (Name, Desk, UpdateTime) VALUES (:Name, :Desk, :UpdateTime)";
  2. USING (OracleCommand command = NEW OracleCommand(commandString, _connection, _transaction))
  3. {
  4.    command.Parameters.ADD("Name", OracleType.VARCHAR, 50).VALUE = strategy;
  5.    command.Parameters.ADD("Desk", OracleType.VARCHAR, 50).VALUE = deskName ?? OracleString.NULL;
  6.    command.Parameters.ADD("UpdateTime", OracleType.DateTime).VALUE = updated;
  7.    command.ExecuteNonQuery();
  8. }
  9.  

El ejemplo fue sacado de http://stackoverflow.com/questions/343299/bulk-insert-to-oracle-using-net

Ahora la forma que recomiendo seria que crees un packete y dentro pongas los procedimientos almacenados un ejemplo con un pequeña tabla que hice.

Código
  1. -- Creamos la tabla
  2. CREATE TABLE clientes
  3. (
  4.  idcliente INTEGER NOT NULL,
  5. nombre VARCHAR2(100)NOT NULL,
  6.  fecha_registro DATE NOT NULL,
  7. CONSTRAINT pk_departamentos PRIMARY KEY(idcliente)
  8. );
  9. /
  10. -- Creamos el packete y definimos los procedimientos-funciones etc.
  11. CREATE OR REPLACE PACKAGE pk_clientes IS
  12.  TYPE t_cursor IS REF CURSOR;
  13.  
  14.  PROCEDURE sp_registra(
  15.            p_nombre VARCHAR2,
  16.            p_fecha_registro DATE
  17.  );
  18.  
  19.  PROCEDURE sp_actualiza(
  20.            p_idcliente INTEGER,
  21.            p_nombre VARCHAR2,
  22.            p_fecha_registro DATE
  23.  );
  24.  
  25.  PROCEDURE sp_get_lista(
  26.            p_resul OUT t_cursor
  27.  );
  28.  
  29.  PROCEDURE sp_get_info_cliente(
  30.            p_idcliente INTEGER,
  31.            p_resul OUT t_cursor
  32.  );
  33.  
  34. END pk_clientes;
  35. /
  36. -- Creamos el cuerpo del packete aqui se implementa los procedimientos-funciones etc.
  37. CREATE OR REPLACE PACKAGE BODY pk_clientes IS
  38.  
  39.  --Procedimiento para Registrar
  40.  PROCEDURE sp_registra(
  41.            p_nombre VARCHAR2,
  42.            p_fecha_registro DATE
  43.  )
  44.  IS
  45.  BEGIN
  46.    INSERT INTO clientes(
  47.                nombre,
  48.                fecha_registro
  49.                )VALUES(
  50.                p_nombre,
  51.                p_fecha_registro
  52.                );
  53.    COMMIT;
  54.  END;
  55.  
  56.  --Procedimiento para Actualizar
  57.  PROCEDURE sp_actualiza(
  58.            p_idcliente INTEGER,
  59.            p_nombre VARCHAR2,
  60.            p_fecha_registro DATE
  61.  )
  62.  IS
  63.  BEGIN
  64.    UPDATE clientes SET
  65.           nombre=p_nombre,
  66.           fecha_registro=p_fecha_registro
  67.    WHERE
  68.           idcliente=p_idcliente;
  69.    COMMIT;
  70.  END;
  71.  
  72.  --Procedimiento para Listar
  73.  PROCEDURE sp_get_lista(
  74.            p_resul OUT t_cursor
  75.  ) IS
  76.  BEGIN
  77.    OPEN p_resul FOR
  78.    SELECT
  79.      idcliente,
  80.      nombre,
  81.      fecha_registro
  82.    FROM
  83.      clientes;
  84.  END;
  85.  
  86.  --Procedimiento para Informacion de un cliente
  87.  PROCEDURE sp_get_info_cliente(
  88.            p_idcliente INTEGER,
  89.            p_resul OUT t_cursor
  90.  ) IS
  91.  BEGIN
  92.    OPEN p_resul FOR
  93.    SELECT
  94.      idcliente,
  95.      nombre,
  96.      fecha_registro
  97.    FROM
  98.      clientes
  99.    WHERE
  100.      idcliente=p_idcliente;
  101.  END;
  102.  
  103. END pk_clientes;
  104. /
  105. -- Secuencia para hacer el campo idcliente autonumerico
  106. CREATE SEQUENCE seq_cliente;
  107. /
  108. CREATE OR REPLACE TRIGGER tr_seq_cliente BEFORE INSERT ON clientes
  109. FOR EACH ROW
  110. BEGIN
  111.  SELECT seq_cliente.NEXTVAL INTO :NEW.idcliente FROM dual;
  112. END;
  113.  

Como podras fijarte eh creado un packete con todas las funciones que necesito para hacer mantenimiento a la tabla clientes. bueno para llamarlo desde .net asumiento que tengo una clase oCliente con propiedades idcliente,nombre,fecha_registro y quiero invocar al procedimiento sp_registra seria asi:

Código
  1. public static void RegistrarCliente(oCliente info)
  2.        {
  3.            using (OracleConnection oCn = new OracleConnection(App.GetStrConnection()))
  4.            {
  5.                string proc = string.Empty;
  6.                proc = "pk_clientes.sp_registra";
  7.                OracleCommand oCmd = new OracleCommand(proc, oCn);
  8.                oCmd.CommandType = CommandType.StoredProcedure;
  9.  
  10.  
  11.                oCmd.Parameters.Add(new OracleParameter("p_nombre", OracleDbType.Varchar2)).Value = info.nombre;
  12.                oCmd.Parameters.Add(new OracleParameter("p_fecha_registro", OracleDbType.Date)).Value = info.fecha_registro;
  13.  
  14.                oCn.Open();
  15.  
  16.                try
  17.                {
  18.                    oCmd.ExecuteNonQuery();
  19.                }
  20.                catch (Exception ex)
  21.                {
  22.                    throw new Exception(ex.Message, ex);
  23.                }
  24.            }
  25.        }
  26.  

Bueno para no hacerlo mas largo te adjunto un pequeño proyecto que hice donde muestro mas detallado la invocacion de cada procedimiento del packete creado.

https://rapidshare.com/files/907284720/TestOracle.zip

Para correrlo pues debes editar la cadena de conexion de App.config y claro ejecutar el script SQL de lineas arriba!!
« Última modificación: 26 Julio 2012, 23:00 pm por .::IT::. » En línea

Simplemente .::IT::.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Erro con conexión ORACLE
.NET (C#, VB.NET, ASP)
DelKoS 1 2,008 Último mensaje 23 Noviembre 2006, 15:05 pm
por DelKoS
Conexion de Oracle a vb.net
.NET (C#, VB.NET, ASP)
wili342 2 2,838 Último mensaje 15 Diciembre 2006, 08:30 am
por BADBYTE-K
conexion a oracle express
.NET (C#, VB.NET, ASP)
alex1331 1 3,066 Último mensaje 25 Febrero 2008, 15:13 pm
por elmaro
[Duda]Conexión a base de datos Oracle
Hacking
nacho87 1 2,910 Último mensaje 15 Agosto 2012, 06:26 am
por atxdz18
Conexion con Oracle
Programación Visual Basic
DragonsWP 1 2,070 Último mensaje 26 Abril 2010, 02:57 am
por BlackZeroX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines