Cadenas de Conexion ADO

Cadenas de Conexión ADO

Por: Carlos Antollini

Introducción

Generalmente uno de los primeros pasos cuando usted intenta trabajar con bases de datos es establecer la conexión. Usted puede buscar diferentes tipos de conexión, y cada una tiene un diferente modo de conexión. Cuando ustedn intenta establecer una conexión con su base de datos, algunas veces, no conoce la correcta sintáxis de la cadena de conexión que debe utilizar. Es el motivo por el cual escribí este artículo. He querido hacer una compilación de las cadenas de conexión para las bases de datos mas conocidas...

 

Conexiónes ODBC sin DSN

Estas cadenas de conexión no necesitan tener creada una conexión ODBC en el Panel de Control, basa con tener instado el Controlador ODBC correspondiente a cada base de datos.

Controlador ODBC para dBASE

strConnection = _T("Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;"
                   "Dbq=c:\\DatabasePath;");

Note: Debe especificar el nombre del archivo en la sentencia SQL... Por ejemplo:

CString strQuery = _T("Select Name, Address From Clients.dbf");

Controlador ODBC para Excel

strConnection = _T("Driver={Microsoft Excel Driver (*.xls)};DriverId=790;"
    bq=C:\\DatabasePath\\DBSpreadSheet.xls;DefaultDir=c:\\databasepath;");

Controlador ODBC para Archivos de Texto

strConnection = _T("Driver={Microsoft Text Driver (*.txt; *.csv)};"
        "Dbq=C:\\DatabasePath\\;Extensions=asc,csv,tab,txt;");

Si usted esta usando archivos delimitados por tabulaciones, debe crear el archivo schema.ini, y debe establecer la opción: Format=TabDelimited en la cadena de conexión.

Note: Debe especificar el nombre del archivo en la sentencia SQL... Por ejemplo:

CString strQuery = _T("Select Name, Address From Clients.csv");

Visual FoxPro

Si esta utilizando un database container (contenedor de base de datos), la cadena de conexión deber ser como sigue:

strConnection = _T("Driver={Microsoft Visual Foxpro Driver};UID=;"
    ourceType=DBC;SourceDB=C:\\DatabasePath\\MyDatabase.dbc;Exclusive=No");

Si esta trabajando sin  database container, debe cambiar el parametro SourceType por DBF :

strConnection = _T("Driver={Microsoft Visual Foxpro Driver};UID=;"
    "SourceType=DBF;SourceDB=C:\\DatabasePath\\MyDatabase.dbc;Exclusive=No");

Controlador ODBC para Access

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

        "Dbq=c:\\DatabasePath\\dbaccess.mdb;Uid=;Pwd=;");

Si esta utilizando un Grupo de Trabajo (Base de datos de sistema): usted necesita indicar la ruta de la base de datos del sistema, el nombre de usuario y el password de la misma. Por lo que tiene dos alternativas: indicar el nombre de usuario y password en la cadena de conexión o en el momento de abrir la conexión. Por ejemplo:

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

        "Dbq=C:\\VC Projects\\ADO\\Samples\\AdoTest\\dbTestSecurity.mdb;"
        "SystemDB=C:\\Program Files\\Microsoft Office\\Office\\SYSTEM.mdw;"
        "Uid=Carlos Antollini;Pwd=carlos");

o también puede ser:

strConnection = _T("Driver={Microsoft Access Driver (*.mdb)};"
        "Dbq=C:\\VC Projects\\ADO\\Samples\\AdoTest\\dbTestSecurity.mdb;"

        "SystemDB=C:\\Program Files\\Microsoft Office\\Office\\SYSTEM.mdw;");
          if(pDB.Open(strConnection, "DatabaseUser", "DatabasePass"))
          {
            ProcesarLosDatos();
            pDB.Close();
          }

Si desea abrir la base de datos en modo exclusivo:

strConnection = _T("Driver={Microsoft Access Driver (*.mdb)};"
        "Dbq=c:\\DatabasePath\dbaccess.mdb;Exclusive=1;");

Controlador ODBC para SQL Server

Para seguridad estándar:

strConnection = _T("Driver={SQL Server};Server=MyServerName;"
        "Trusted_Connection=no;"
        "Database=MyDatabaseName;Uid=MyUserName;Pwd=MyPassword;");

Para Conexiónes de Confianza  (Autenticación de Microsoft Windows NT ):

strConnection = _T("Driver={SQL Server};Server=MyServerName;"
     "Database=myDatabaseName;Uid=;Pwd=;");

También, usted puede utilizar el parametro Trusted_Connection que indica que va a utilizar el modo de  Autenticación Integrada de Microsoft Windows NT para autorizar el acceso a la base de datos SQL Server. Por ejemplo:

strConnection = _T("Driver={SQL Server};Server=MyServerName;"
    "Database=MyDatabaseName;Trusted_Connection=yes;");

Si SQL Server esta en ejecución en la misma computadora, usted puede reemplazar el nombre del servidor por el texto: (local) tal como esta en este ejemplo:

strConnection = _T("Driver={SQL Server};Server=(local);"

        "Database=MyDatabaseName;Uid=MyUserName;Pwd=MyPassword;");

Si desea conectarse con un servidor remoto de SQL Server entonces debe indicar la ubicación del servidor y el Protocolo de Red que se va a utilizar.

El parametro Address debe ser un numero de IP y debe incluirse el puerto de conexión. El parametro Network puede ser uno de los siguientes valores:

  • dbnmpntw Win32 Named Pipes
  • dbmssocn Win32 Winsock TCP/IP
  • dbmsspxn Win32 SPX/IPX
  • dbmsvinn Win32 Banyan Vines
  • dbmsrpcn Win32 Multi-Protocol (Windows RPC)

Para mas información, ver Q238949.

strConnection = _T("Driver={SQL Server};Server=130.120.110.001;"

     "Address=130.120.110.001,1052;Network=dbmssocn;Database=MyDatabaseName;"
     "Uid=myUsername;Pwd=myPassword;");

Controlador ODBC para Oracle

Para el actual Controlador ODBC para Oracle (desarrollado por Microsoft).

strConnect = _T("Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;" "Uid=MyUsername;Pwd=MyPassword;");

Para  Controladores ODBC para Oracle anteriores (desarrollados por Microsoft).

strConnect = _T("Driver={Microsoft ODBC Driver for Oracle};"
     "ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;");

Controlador ODBC para MySQL

Si desea conectarse a una base de datos local, puede utilizar una de las siguientes cadenas de conexión:

strConnect = _T("Driver={MySQL ODBC 3.51 Driver};Server=localhost;"
     "Database=MyDatabase;User=MyUserName;Password=MyPassword;Option=4;");

Si desea conectarse a una base de datos remota, debe especificar el nombre del servidor o el numero de IP en el parametro Server, El puero por defecto es el 3306, si es diferente debe indicarlo.

strConnect = _T("Driver={mySQL ODBC 3.51 Driver};Server=MyRemoteHost;"
     "Port=3306;Option=4;Database=MyDatabase;Uid=MyUsername;Pwd=MyPassword;");

El parametro Option puede ser uno de los siguientes valores:

  • 1 - El cliente no puede manejar conexiones MyODBC que retornen el ancho real de las columnas.
  • 2 - El cliente no recibirá de MySQL el valor verdadero de las filas afectadas por una consulta.Si este parametro esta establecido entonces MySQL retornará 'found rows' en su lugar. Funciona para MySQL 3.21.14 o superior.
  • 4 - Genera un archivo de ocurrencias c:\myodbc.log es lo mismo que poner: MYSQL_DEBUG=d:t:O,c::\myodbc.log en el archivo AUTOEXEC.BAT.
  • 8 - No especificar un limite de paquetes para resultados y parametros.
  • 16 - Don't prompt for questions even if driver would like to prompt.
  • 32 - Habilita o deshabilita el soporte a cursores dinámicos. No esta disponible para MyODBC 2.50.
  • 64 - Ignora el uso de los nombres de la bases de datos en 'basedatos.tabla.columna'.
  • 128 - Forzar el uso de cursores administrados (ODBC manager cursors) (experimental).
  • 256 - Deshabilitar el uso extendido de busqueda (experimental).
  • 512 - Rellena los campos CHAR al tamaño total de la columna.
  • 1024 - SQLDescribeCol()  retornará los nombres de columnas con todas sus características
  • 2048 - Usar protocolo cliente/servidor comprimido.
  • 4096 - Indicar al servidor que ignore el espacio despues del nombre de una función y antes del caracter '(' (necesario para PowerBuilder). Esto hará todos los nombres de funciones palabrasclave (Keywords).
  • 8192 - Conectar mediante named pipes a una instancia de mysqld corriendo sobre Windows NT.
  • 16384 - Cambiar el tipo de dato de las columnas de LONGLONG a INT  (algunas aplicaciones no pueden manejar el tipo de dato LONGLONG).
  • 32768 - Retornar 'user' como Table_qualifier y Table_owner desde SQLTables (experimental).
  • 65536 - Leer  parametros desde el cliente y grupos ODBC del archivo de configuración my.cnf.
  • 131072 - Agregar algunas verificaciones de seguridad extra por (No debería ser necesario, pero...)

Si usted desea tener multiples opciones, usted debe sumar los indicadores anteriores. Por ejemplo: 16 + 1024 = 1030, entonces el parametro denería ir de esta manera Option= 1030;

Para mas información, visite  Manual de referencia MyODBC.

Controlador ODBC para AS400

strConnect = _T("Driver={Client Access ODBC Driver (32-bit)};System=myAS400;"

      "Uid=myUsername;Pwd=myPassword;");

Controlador ODBC para  SyBase

strConnect = _T("Driver={Sybase System 10};Srvr=MyServerName;Uid=MyUsername;"
       "Pwd=myPassword;");

ODBC Driver for Sybase SQL AnyWhere

strConnect = _T("ODBC;Driver=Sybase SQL Anywhere 5.0;"
    "DefaultDir=C:\\DatabasePath\;Dbf=C:\\SqlAnyWhere50\\MyDatabase.db;"

    "Uid=MyUsername;Pwd=MyPassword;Dsn=\"\";");

Conexiones ODBC con DSN

ODBC DSN

strConnect = _T("DSN=MyDSN;Uid=MyUsername;Pwd=MyPassword;");

Proveedores OLE DB

Proveedor OLE DB para SQL Server

Para seguridad estándar:

strConnect = _T("Provider=sqloledb;Data Source=MyServerName;"
        "Initial Catalog=MyDatabaseName;"
        "User Id=MyUsername;Password=MyPassword;");

Para conexiones de confianza:  ( Seguridad Integrada de Microsoft Windows NT):

strConnect = _T("Provider=sqloledb;Data Source=MyServerName;"
        "Initial Catalog=MyDatabaseName;"

        "Integrated Security=SSPI;");

Si usted desea conectarse a una Instancia  de (SQL server 2000 o superior), debe especificar el parametro Data Source=NombreServidorInstancia tal como se muestra en el ejemplo siguiente:

strConnect = _T("Provider=sqloledb;Data Source=NombreServidorInstancia;"
    "Initial Catalog=MyDatabaseName;User Id=MyUsername;Password=MyPassword;");

Si desea conectarse con SQL corriendo en la misma computadora, debe espeficcar la palabra clave (local) en el parametro Dara Source. Por ejemplo:

strConnect = _T("Provider=sqloledb;Data Source=(local);"
        "Initial Catalog=myDatabaseName;"
        "User ID=myUsername;Password=myPassword;");

Para conectarse a SQL Server corriendo en un equipo remoto (mediante un numero de IP):

strConnect = _T("Provider=sqloledb;Network Library=DBMSSOCN;"
        "Data Source=130.120.110.001,1433;"
        "Initial Catalog=MyDatabaseName;User ID=MyUsername;"

        "Password=MyPassword;");

Proveedor OLE DB  para MySQL (por Todd Smith)

strConnection = _T("Provider=MySQLProv;Data Source=test");

Donde test es el nombre de la base de datos MySQL. Tambien puede reemplazar el nombre de la base de datos por las siguiente cadena de conexión: server=localhost;DB=test

Proveedor OLE DB para AS400

strConnect = _T("Provider=IBMDA400;Data source=myAS400;User Id=myUsername;"
     "Password=myPassword;");

Para mas información, visite: Usando Proveedor OLE DB para AS/400 y VSAM.

Proveedor OLE DB para Active Directory

strConnect = _T("Provider=ADSDSOObject;User Id=myUsername;Password=myPassword;");

Para mas información, visite: Microsoft OLE DB Provider for Microsoft Active Directory Service.

Proveedor OLE DB para DB2

Si esta utilizando una conexión TCP/IP :

strConnect = _T("Provider=DB2OLEDB;Network Transport Library=TCPIP;"
        "Network Address=130.120.110.001;"
        "Initial Catalog=MyCatalog;Package Collection=MyPackageCollection;"
        "Default Schema=MySchema;User ID=MyUsername;Password=MyPassword;");

Si esta utilizando una conexión APPC:

strConnect = _T("Provider=DB2OLEDB;APPC Local LU Alias=MyLocalLUAlias;"
        "APPC Remote LU Alias=MyRemoteLUAlias;Initial Catalog=MyCatalog;"
        "Package Collection=MyPackageCollection;Default Schema=MySchema;"
        "User ID=MyUsername;Password=MyPassword;");

Para mas información, visite: Using the OLE DB Provider for DB2.

Proveedor OLE DB para Microsoft Jet

  • Conectando a un archivo Access usando el proveedor JET OLE DB:

    Con seguridad estándar:

    strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;"
            "Data Source=C:DatabasePathMmDatabase.mdb;"
            "User Id=admin;Password=;");

    Usando seguridad basada en Workgroup (Base de datos de sistema):

    strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;"
    
            "Data Source=C:DataBasePathmydb.mdb;"
            "Jet OLEDB:System Database=MySystem.mdw;");
    pRs.Open(strConnect, "MyUsername", "MyPassword");
  • Conectando a Hojas de Excel usando Proveedor JET OLE DB:
    strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;"
            "Data Source=C:DatabasePathDBSpreadSheet.xls;"
    
            "Extended Properties=""Excel 8.0;HDR=Yes;"";");

    Nota: Si "HDR=Yes", el proveedor no incluirá la primera fila de la selección en el resultado. Si "HDR=No", se incluirá la primera fila de la selección en el resultado.

    Para mas información, visite: Q278973.

  • Connectando a un artivo de texto con el Proveedor JET OLE DB:
    strConnect = 
            _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatabasePath;"
            "Extended Properties=""text;"
            "HDR=Yes;FMT=Delimited;"";");

    Nota: Debe especificar el nombre del archivo en la sentencia SQL:

    CString strQuery = _T("Select Name, Address From Clients.txt");

    Para mas información, viste: Q262537.

  • Conectando al correo personal de Outlook 2000 usando el Proveedor JET OLE DB: (Por J. Cardinal)
    strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;Outlook 9.0;"
          "MAPILEVEL=;DATABASE=C:Temp;")

    Reemplazar  c:Temp  con cualquier otra carpeta temporal. Esto creará un esquema de archivos que mostrará todos los campos disponibles. El parametro en blanco MAPILEVEL indica el folder de nivel superior.

  • Conectando a Exchange mail box a travéz de JET: (Por J. Cardinal)
    strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;Exchange 4.0;"
          "MAPILEVEL=Mailbox - Pat Smith|;DATABASE=C:Temp;")

    Debe reemplazar C:Temp por cualquier carpeta temporal.

    Reemplazar Pat Smith por el nombre del buzon de entrada , debe mantener la barra vertical | para indicar el folder de nivel superior. Ponga un subfolder despues de la barra vertical | para acceder a un folder en específico.

    Nota: Usted puede realizar consultas SQL sobre los correos almacenados como si fuera una base de datos... Por ejemplo:

    CString strQuery = _T("SQL "SELECT Contacts.* FROM Contacts;");

    Para mas información, visite: The Jet 4.0 Exchange/Outlook IISAM.

Proveedor OLE DB para Bases de datos ODBC

Si desea conectarse a Microsoft Access:

strConnect = _T("Provider=MSDASQL;Driver={Microsoft Access Driver (*.mdb)};"

        "Dbq=c:DatabasePathMyDatabase.mdb;Uid=MyUsername;Pwd=MyPassword;");

Si desea conectarse con SQL Server:

strConnect = _T("Provider=MSDASQL;Driver={SQL Server};Server=MyServerName;"
        "Database=MyDatabaseName;Uid=MyUsername;Pwd=MyPassword;");

Si desea utilizar un DSN:

strConnect = _T("Provider=MSDASQL;PersistSecurityInfo=False;"
        "Trusted_Connection=Yes;"

        "Data Source=MyDSN;catalog=MyDatabase;");

Para mas información, visite: Microsoft OLE DB Provider for ODBC.

Proveedor OLE DB para OLAP

Microsoft® OLE DB  para Online Analytical Processing (OLAP)  es un grupo de objetos e interfaces que extienden el uso del proveedor OLE DB para el acceso a almacenamiento de datos multidimensional.

strConnect = _T("Provider=MSOLAP;Data Source=MyOLAPServerName;"
     "Initial Catalog=MyOLAPDatabaseName;");
Utilizando HTTP:

Esta característica habilita a una aplicacion cliente conectarse a un Analysis Server a travez de Microsoft® Internet Information Services (IIS) especificando una dirección URL en la propiedad Data Source de las cadenas de conexión de una aplicación cliente. Éste medoto de conexión permite utilizar el servicio PivotTable® para hacer un tunel por medio de los firewalls o servidores proxy hacia un Analysis Server. Un tipo especial de Active Server Pages (ASP), msolap.asp, habilita la conexión a travez de IIS. El directorio en el que éste archivo debe situarse tiene que incluirse como parte de una URL entonces se conectará con el servidor, por ejemplo: http://www.myserver.com/myolap/

Usando una URL
strConnect = _T("Provider=MSOLAP;Data Source=http://MyOLAPServerName/;"
     "Initial Catalog=MyOLAPDatabaseName;");
Usando SSL
strConnect = _T("Provider=MSOLAP;Data Source=https://MyOLAPServerName/;"
     "Initial Catalog=MyOLAPDatabaseName;");

Para mas información, visite: OLE DB for OLAP, Connecting Using HTTP.

Proveedor OLE DB para Oracle

Proveedor OLE DB para Oracle (de Microsoft)

El Proveedor OLE DB de Microsoft para Orable permite acceso ADO  a bases de datos Oracle.

strConnect = _T("Provider=MSDAORA;Data Source=MyOracleDB;User Id=myUsername;"
     "Password=myPassword;");

Para mas información,visite: Microsoft OLE DB Provider for Oracle.

Proveedor OLE DB para Oracle (de Oracle).

Utilizando seguridad estándar:

strConnect = _T("Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;"

        "User Id=myUsername;Password=myPassword;");

Para conexiones de confianza:

  • OS Authenticated, cadena de conexión ID de usuario a "/":
    strConnect = _T("Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;"
       "User Id=/;Password=;");
  • OS Authenticated usando OSAuthent:
    strConnect = _T("Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;")

For more information, see: Oracle Provider for OLE DB Developers Guide.

Proveedor OLE DB para Visual FoxPro

strConnect = _T("Provider=vfpoledb;"

     "Data Source=C:DatabasePathMyDatabase.dbc;");

Para mas información, visite: Microsoft OLE DB Provider for Visual FoxPro.

Proveedor OLE DB para Index Server (por Chris Maunder)

strConnect = _T("provider=msidxs;Data Source=MyCatalog;");

Para mas información, visite: Microsoft OLE DB Provider for Microsoft Indexing Service.

Conexiones OLE DB Data Link

Data Link File - UDL

strConnection = _T("File Name=c:DataBasePathDatabaseName.udl;");

Si usted desea crear un Archivo Data Link (Data Link File), puede crear un nuevo archivo txt en blanco, cambiar la extension a .udl, luego hacer doble click sobre el archivo, y el sistema operativo llamará a la aplicación correspondiente para modificar/crear el archivo.

[ Data Link Application ]

Otros Artículos en esta sección

¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro deVisual C++ »