Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: greenselves en 20 Noviembre 2010, 15:02 pm



Título: conectar c# a oracle con odbc
Publicado por: greenselves en 20 Noviembre 2010, 15:02 pm
hola!  tengo que hacer un programa en C# con la que pueda hacer operaciones de consulta desde la misma aplicacion a Oracle, esto lo quiero hacer desde ODBC.

De verdad que se me ha hecho un problema, y confundido con lo que debe de ir y lo que no para establecer la conexion, espero que me puedan orientar acerca de  la conexion entre C# y la base de datos que tengo con Oracle y mas que nada de lo que se necesita para establecerlo.

De lo que me he encontrado es que se necesita un driver y un DSN, tengo en mis problema que no se que deba ir adentro del DSN, me fui a herramientas administrativas > origenes de datos ODBC (windows xp) y cree un nuevo DSN
"AccesoC", pero al especificar la base de datos, no encontre la ruta de Oracle, me quede en c:\oraclexe.

Esto es lo que llevo del programa para unicamente establecer la conexion:


Código
  1. using System;
  2. using System.Windows.Forms;
  3. using System.Data.Odbc;
  4.  
  5. namespace WindowsApplication1
  6. {
  7.  
  8. public partial class Form1 : Form
  9. {
  10.  
  11. public Form1()
  12. {
  13. //   InitializeComponent();
  14. }
  15.  
  16. public  static  void Main()
  17. {
  18. OdbcConnection cnn;
  19.  
  20. string strConnect="DSN=C:\AccesoC.mdb;  UID=system;PWD=greenselves;DATABASE=store";
  21.  
  22. cnn = new OdbcConnection(strConnect );
  23.  
  24. try
  25. {
  26. cnn.Open();
  27. MessageBox.Show ("Conexion Abierta ");
  28. cnn.Close();
  29. }
  30.  
  31. catch (Exception ex)
  32. {
  33. MessageBox.Show("No conexion ");
  34. }
  35.  
  36.        } // main
  37.  
  38.    } //Form
  39.  
  40. } // namespace



Al ejecutarlo, me dice que no se reconoce el simbolo "\"
->   string strConnect="DSN=C:\AccesoC.mdb;  UID=system;

Espero me puedan ayudar de lo que me falta para establecer la conexion.



Título: Re: conectar c# a oracle con odbc
Publicado por: [D4N93R] en 21 Noviembre 2010, 02:39 am
En C# y todos los derivados de C++, el \ es caracter de especial, ejm: nueva línea \n, tab \t, NULL \0, etc,

Entonces, en tu código tienes en el string lo siguiente: C:\A  eso hace un carácter \A que no es lo que quieres sino, más bien el slash junto a una A, para eso tienes dos opciones:

1) Usar doble slash \\ , de esta forma funciona perfectamente y quedaría así:
Código
  1. string strConnect="DSN=C:\\AccesoC.mdb;  UID=system;PWD=greenselves;DATABASE=store";

2) Colocar un Arroba antes del string para eliminar esos carácteres especiales:
Código
  1. string strConnect= @"DSN=C:\AccesoC.mdb;  UID=system;PWD=greenselves;DATABASE=store";


Un saludo


Título: Re: conectar c# a oracle con odbc
Publicado por: greenselves en 22 Noviembre 2010, 17:27 pm
gracias, ya compilo sin problemas, pero ahora mi problema es que no se establece ninguna conexion con la base de datos que estoy manejando con Oracle.

he integrado lo siguiente a mi codigo en el main:

Código
  1. public  static  void Main()
  2. {
  3.  
  4.        OdbcConnection cnn;
  5.  
  6.        Driver={Microsoft Access Driver (*.mdb)};
  7.  
  8. string connetionString="DSN=C:\\AccesoC.mdb;Uid=greenselves";
  9.  
  10. cnn = new OdbcConnection(connetionString);
  11.  
  12.         try
  13.            {
  14.                cnn.Open();
  15.                MessageBox.Show ("Conexion Abierta ! ");
  16.                cnn.Close();
  17.            }
  18.            catch (Exception ex)
  19.            {
  20.                MessageBox.Show("Sin conexion ! ");
  21.            }
  22. }
  23.  
D4N93R: Recuerda colocar las etiquetas geshi para colorear el código. De esta forma queda más entendible para los usuarios y así podrás tener más ayuda.


Pero ahora esto me trae problemas:
 Driver={Microsoft Access Driver (*.mdb)};

me genera errores:

error CS1525: El término de la expresión '{' no es válido
error CS1002: Se esperaba ;
 error CS1002: Se esperaba ;
 error CS1525: El término de la expresión '.' no es válido
 error CS1026: Se esperaba )
 error CS1002: Se esperaba ;
 error CS1525: El término de la expresión ')' no es válido
 error CS1002: Se esperaba ;

Espero me puedan ayudar


Título: Re: conectar c# a oracle con odbc
Publicado por: greenselves en 28 Noviembre 2010, 15:02 pm
He encontrado que primero se tiene que agregar el origen de datos, eso dentro de panel de control y herramientas administrativas. Ahi me aparecen varias pestañas, tengo que seleccionar el que dice DSN del sistema, pero a la hora de agregar un Origen solo me aparece uno de Sql server, mientras que necesito el que dice Origen in xe, pero no está, ya tengo instalado el visual studio 2008 y La bases de datos de Oracle.
Alguna ide de lo que podria hacer para que me aparezca el origen?

Por su ayuda gracias!


Título: Re: conectar c# a oracle con odbc
Publicado por: .::IT::. en 28 Noviembre 2010, 15:43 pm
te recomiendo olvidarte de los dns y usar:

http://www.oracle.com/technetwork/topics/dotnet/index-085163.html

Ventasjas:
     * No necesitas crear nada de dns en la maquina cliente.
     * Segun dice la misma oracle es mas eficiente(yo les creo)
Desventajas:
     * si no has usado Ado .net antes vas ah tener que aprender

SI aún asi quieres usar dns(odbc) pues aqui esta tu solucion con foto y todo

http://wiki.oracle.com/page/ODBC

Suerte greenselves tu puedes..


Título: Re: conectar c# a oracle con odbc
Publicado por: greenselves en 29 Noviembre 2010, 16:56 pm
Gracias por la ayuda, despues entendi que mi sintaxis era incorrecta.

OdbcConnection conexion = new OdbcConnection("DSN=oraclexe;Uid=system;Pwd=greenselves");

Saludos