miércoles, 5 de septiembre de 2012

Hablemos de ODBC.

Bueno en el siguiente post hablaremos un poco de ODBC, esa herramienta que nos puede sacar de muchos apuros. jeje.


Un Poco de WikiPedia.


Open DataBase Connectivity (ODBC) es un estándar de acceso a las bases de datos desarrollado por SQL Access Group en 1992. El objetivo de ODBC es hacer posible el acceder a cualquier dato desde cualquier aplicación, sin importar qué sistema de gestión de bases de datos (DBMS) almacene los datos. ODBC logra esto al insertar una capa intermedia (CLI) denominada nivel de Interfaz de Cliente SQL, entre la aplicación y el DBMS. El propósito de esta capa es traducir las consultas de datos de la aplicación en comandos que el DBMS entienda. Para que esto funcione tanto la aplicación como el DBMS deben ser compatibles con ODBC, esto es que la aplicación debe ser capaz de producir comandos ODBC y el DBMS debe ser capaz de responder a ellos. Desde la versión 2.0 el estándar soporta SAG y SQL.
El software funciona de dos modos, con un software manejador en el cliente, o una filosofía cliente-servidor. En el primer modo, el driver interpreta las conexiones y llamadas SQL y las traduce desde el API ODBC hacia el DBMS. En el segundo modo para conectarse a labase de datos se crea una DSN dentro del ODBC que define los parámetros, ruta y características de la conexión según los datos que solicite el creador o fabricante.


Ahora veamos algunas formas de utilizarla.

Microsoft Access, Con PHP

if ($conn_access = odbc_connect ( "guiarte_access", "", "")){     echo "Conectado correctamente";
    $ssql = "select * from libros";
    if($rs_access = odbc_exec ($conn_access, $ssql)){
        echo "La sentencia se ejecutó correctamente";
        while ($fila = odbc_fetch_object($rs_access)){
           echo "
" . $fila->titulo;
        }
    }else{
        echo "Error al ejecutar la sentencia SQL";
    }
} else{
    echo "Error en la conexión con la base de datos";
}



DB2 IBM, Con PHP

$database = 'DBNAME';$hostname = 'HOST';$port = 'PORT';$user = 'USERNAME';$password = 'PASSWORD';$driver = 'DB2';$conn_string = "DRIVER=\{$driver};DATABASE=$database;HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
if (!$db = odbc_connect ($conn_string, $user, $password)) echo 'Error!';else echo 'Success!';
odbc_close($db);



Oracle, Con ASP

<%  Dim conexion, rsTabla   'creamos un objeto de tipo "connection" para la   'conexión con el origen de datos ODBC   set conexion = Server.CreateObject("ADODB.Connection")  'nos conectamos al origen de datos ODBC "bdoracle"  conexion.Open "bdoracle","system","contraseña_system"   'creamos un objeto de tipo "recordset" (tabla)   Set rsTabla = Server.CreateObject("ADODB.Recordset")   consultaSQL ="SELECT * from prueba"   'asignamos al objeto "rsTabla" el resultado de la ejecución de la consulta SQL   rsTabla.Open consultaSQL, conexion, 1   'Recorremos todos los registros del objeto recordset y mostramos su valor   while not rstabla.eof    codigo = rstabla("codigo")     nombre = rstabla("nombre")     importe = rstabla("importe")     Response.Write "Código: " & codigo & "
    Response.Write "Nombre: " & nombre & "
"
    Response.Write "Importe: " & importe & "
" & "
    rstabla.MoveNext   wend   'cerramos el recordset y la conexión   rsTabla.close   conexion.close   'liberamos los objetos   Set conexion = Nothing   Set rsTabla = Nothing %>

SQL Server, con Node.js
var odbc = require("odbc");
var connectionString = "DSN=probrems;UID=noneOfYourBeesWax;PWD=noneOfYourBeesWax;DATABASE=andrew";
var db = new odbc.Database();
    db.open(connectionString, function(err){
        if(err){
            throw err;
        };
        /*
            Once the connection is open you can query it.
            That means if you tried to query it outside or before this handler finished, it would say...
            "Connection Not Open"
        */
        db.query("SELECT * FROM andrew.dbo.probremTypes;", function(err, rows, moreResultSets){
            if(err){
                console.log(err.message);
            };
            console.log(rows);
        });
    });
process.on('SIGINT', function () {
    db.close(function(){
        console.log('Database Connection Closed');
        process.exit();
    });
});




Los anteriores ejemplos no han sido probados, asi que no sabremos si tienen errores o no, el funcionamiento de  ODBC es simple ofrecer un conector universal para el acceso a datos, antes que todo deberán tener en cuenta la instalacion de los respectivos drivers, si no lo hacen problemas inesperados pueden aparecer.






No hay comentarios: