none
Conexion c#.net - Oracle Express 10g RRS feed

  • Pregunta

  •  

    Buenas, estoy realizando una aplicacion web que consume informacion de unas tablas de oracle express 10g.

    Para ello tengo una maquina virtual en la que instalado el Oracle express 10g, ya cree mis paquetes con un procedimiento almacenado, pero tengo problemas al abrir la conexion. Mi pregunta es si el cliente debe de tener instalado algun componente adicional para establecer la conexion, para esto estoy usando la dll Oracle.DataAccess.


    OracleConnection conn = new OracleConnection("Data Source=XE;User Id=SYS;Password=123456;");
    Y obtengo un error de conexion,  he leido que hay una configuración acerca del archivo tnsnames.ora, pero no comprendo muy bien como he de hacerlo.

    Saludos.


    El hombre mas poderoso del mundo es aquel que es dueño de si mismo
    miércoles, 18 de febrero de 2009 17:11

Todas las respuestas

  •  Muchachos...alguna respuesta por alli...
    El hombre mas poderoso del mundo es aquel que es dueño de si mismo
    jueves, 19 de febrero de 2009 21:47
  • Hola.

    A lo mejor estoy equivocado, pero creo que necesitas crear una conexión ODBC primeramente con el nombre 'XE' que apunte a tu máquina virtual.

    Saludos.
    jueves, 12 de marzo de 2009 0:33
  • hola,

    aqui tienes muchas alternativas en como crear el connection string:

    Connection strings for Oracle

    database connection strings


    Igualmente segun veo creo que spucheta tiene razon deberias crear el ODBC, o sea algo como esto:

    ODBC Creation Guide

    Saludos

    Leandro Tuttini
    jueves, 12 de marzo de 2009 13:16
  • Tienes clientes windows para Oracle?. El configurar el ODBC no es necesario.

    Lo que tienes que configurar es el tnsnames.ora, iguala uno que ya este funcionando para un client Oracle (PL/SQL o TOAD). Busca todos los archivos tnsnames.ora, y estos deberían ser iguales. Instales los componentes clientes para .NET?

    Saludos,


    Sergio Tarrillo - http://sergiot2.com/blog/
    Si la respuesta ha sido de utilidad marca la como respuesta correcta.
    viernes, 20 de marzo de 2009 0:01
  • ::::::::::::::::web config:::::::::::::::::::::::

     

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <connectionStrings>
            <add name="conex" connectionString="Data Source=localhost;user id=ventas;password=1234"/>       
        </connectionStrings>
    </configuration>

    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    ::::::::::::::::::::::::::capa datos:::::::::::::::::::::::::

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.OracleClient;
    using System.Configuration;
    namespace PRYDATA
    {
        public class Clsdata
        {
            public String Conexion()
            {
                return ConfigurationManager.ConnectionStrings["conex"].ConnectionString;

            }
    //un metodo general para ejecutar cualquier procedure , pasando n parametros
            public DataTable TraeTabla(string nompro, params object[] lista)
            {
                OracleConnection cn = new OracleConnection(Conexion());
                OracleCommand cmd = new OracleCommand(nompro, cn);
                cmd.CommandType = CommandType.StoredProcedure;
                cn.Open();
                OracleCommandBuilder.DeriveParameters(cmd);
                int cuenta = 0;
                string parm;
                foreach (OracleParameter pr in cmd.Parameters)
                {
                    parm = pr.OracleType.ToString();//obtener el tipo de parametro
                    if (parm.ToUpper() != "CURSOR")
                    {
                        pr.Value = lista[cuenta];
                        cuenta++;
                    }

                }//fin foraech
                OracleDataAdapter da = new OracleDataAdapter(cmd);
                DataTable dt = new DataTable();
                da.Fill(dt);
                cmd.Dispose();
                da.Dispose();
                return dt;
           }//fin traetabla
        //funcion de ejecutar

           public int Ejecuta(string nompro, params object[] lista)
           {
               OracleConnection cn = new OracleConnection(Conexion());
               OracleCommand cmd = new OracleCommand(nompro, cn);
               cmd.CommandType = CommandType.StoredProcedure;
               cn.Open();
               OracleCommandBuilder.DeriveParameters(cmd);
               int cuenta = 0;
               foreach (OracleParameter pr in cmd.Parameters)
               {
                       pr.Value = lista[cuenta];
                       cuenta++;
                }//fin foraech
                int res = cmd.ExecuteNonQuery();
                cn.Close();       
               cmd.Dispose();
               return res;
           }//fin traetabla
           //funcion de ejecutar

        }
    }

    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    ::::::::::::::::::::::::::::capa negocio :::::::::::::::::::::::::

    using System;
    using System.Collections.Generic;
    using System.Text;
    using PRYDATA;
    using System.Data;
    namespace PryNegocio
    {
        public class ClsNegocio
        {
            Clsdata obj = new Clsdata();
            //instanciando la clase Clsdata
            public DataTable FacMes(int anio)
            {
                return obj.TraeTabla("Spmes", anio);

            }

    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

     

    ::::::::::::::::::::::::::::::::presentacion:::::::::::::::::::::::::::::

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    using PryNegocio;
    namespace PryPresentacion
    {
        public partial class Form1 : Form
        {
            ClsNegocio obj = new ClsNegocio();
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                this.dataGridView1.DataSource = obj.FacMes(Convert.ToInt32(textBox1.Text));

            }
        }
    }

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.

    para descargare el proyecto con mantenimiento completo visitame

    --->https://docs.google.com/leaf?id=0B-8TsvuVmDtVNGQzYmM3MDAtNzg3ZC00NDllLThjN2QtMWU1OGMzMGI1NDlh&sort=name&layout=list&num=50<---

    • Editado Daván Palma domingo, 2 de enero de 2011 22:43 nueva direccion de contacto
    miércoles, 28 de abril de 2010 5:49
  • Muy Buenas Noches, prueben con este string de conexión, este es el mismo del TNSNAME que esta por defecto en la maquina, me funcionó y espero que a ustedes también, y lo saque de la pagina que Leandro Tuttini les publico.

     

     

    SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=myUsername;pwd=myPassword;

     

     

    Saludos


    Pool Smart Zapata Ruiz
    sábado, 4 de febrero de 2012 1:53