conectar c# a oracle con odbc

Iniciado por greenselves, 20 Noviembre 2010, 15:02 PM

0 Miembros y 1 Visitante están viendo este tema.

greenselves

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 (csharp) [Seleccionar]
using System;
using System.Windows.Forms;
using System.Data.Odbc;

namespace WindowsApplication1
{

public partial class Form1 : Form
{

public Form1()
{
//   InitializeComponent();
}

public  static  void Main()
{
OdbcConnection cnn;

string strConnect="DSN=C:\AccesoC.mdb;  UID=system;PWD=greenselves;DATABASE=store";

cnn = new OdbcConnection(strConnect );

try
{
cnn.Open();
MessageBox.Show ("Conexion Abierta ");
cnn.Close();
}

catch (Exception ex)
{
MessageBox.Show("No conexion ");
}

       } // main

   } //Form

} // 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.

Greenselves

[D4N93R]

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 (csharp) [Seleccionar]
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 (csharp) [Seleccionar]
string strConnect= @"DSN=C:\AccesoC.mdb;  UID=system;PWD=greenselves;DATABASE=store";


Un saludo

greenselves

#2
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 (csharp) [Seleccionar]
public  static  void Main()
{

       OdbcConnection cnn;

       Driver={Microsoft Access Driver (*.mdb)};

string connetionString="DSN=C:\\AccesoC.mdb;Uid=greenselves";

cnn = new OdbcConnection(connetionString);

        try
           {
               cnn.Open();
               MessageBox.Show ("Conexion Abierta ! ");
               cnn.Close();
           }
           catch (Exception ex)
           {
               MessageBox.Show("Sin conexion ! ");
           }
}

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
Greenselves

greenselves

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!
Greenselves

.::IT::.

#4
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..
Simplemente .::IT::.

greenselves

Gracias por la ayuda, despues entendi que mi sintaxis era incorrecta.

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

Saludos
Greenselves