Compartir a través de


Conexión a SQL Database mediante C y C++

Se aplica a: Azure SQL Database

Este artículo ayuda a los desarrolladores de C y C++ a conectarse a Azure SQL Database.

Requisitos previos

Necesita lo siguiente para completar los pasos de esta guía:

  • Una cuenta de Azure activa. Si no tiene una, puede registrarse para obtener una prueba gratuita de Azure.
  • Visual Studio. Debe instalar los componentes del lenguaje C++ para compilar y ejecutar este ejemplo.
  • Visual C++ for Linux Development (Visual C++ para el desarrollo de aplicaciones para Linux). Si está desarrollando en Linux, también debe instalar la extensión de Visual Studio para Linux.

Tecnologías de acceso a datos: ODBC y OLE DB

Actualmente hay dos formas de conectarse a las bases de datos de Azure SQL: ODBC (Open Database Connectivity) y OLE DB (Object Linking and Embedding database). En los últimos años, Microsoft se ha alineado con ODBC para el acceso a datos relacionales nativos. ODBC es mucho más rápido que OLE DB. El único inconveniente aquí es que ODBC utiliza una API de estilo C anterior.

Creación de su instancia de Azure SQL Database

Vea la página de introducción para aprender a crear una base de datos de ejemplo. Como alternativa, puede seguir los pasos de este breve vídeo de dos minutos para crear una instancia de Azure SQL Database mediante Azure Portal.

Obtención de la cadena de conexión

Después de aprovisionar la instancia de Azure SQL Database, debe seguir estos pasos para determinar la información de conexión y agregar la dirección IP de cliente para el acceso de firewall.

En Azure Portal, vaya a la cadena de conexión de ODBC de la instancia de Azure SQL Database mediante la opción Mostrar las cadenas de conexión de la base de datos que aparece como parte de la sección Información general de la base de datos:

ODBCConnectionString

ODBCConnectionStringProps

Copie el contenido de la cadena ODBC (Incluye Node.js) [autenticación de SQL] . Esta cadena se usará más adelante para conectarse desde el intérprete de línea de comandos ODBC de C++. Esta cadena proporciona detalles como el controlador, el servidor y otros parámetros de conexión de base de datos.

Incorporación de la IP al firewall

Vaya a la sección del firewall del servidor y agregue la IP del cliente al firewall siguiendo estos pasos para asegurarse de que se puede establecer una conexión correcta:

AddyourIPWindow

Ya ha configurado Azure SQL Database y está listo para conectarse desde el código de C++.

Conexión desde una aplicación de C o C++ de Windows

Puede conectarse fácilmente a la instancia de Azure SQL Database mediante ODBC en Windows con este ejemplo que se compila con Visual Studio. El ejemplo implementa un intérprete de línea de comandos de ODBC que puede usarse para conectarse a Azure SQL Database. Este ejemplo toma un archivo de nombre de origen de datos (DSN) como argumento de línea de comandos o la cadena de conexión detallada que se copió anteriormente desde Azure Portal. Abra la página de propiedades para este proyecto y pegue la cadena de conexión como argumento de comando, tal como se muestra aquí:

DSN Propsfile

Asegúrese de proporcionar los detalles de autenticación adecuados para la base de datos como parte de esa cadena de conexión de base de datos.

Inicie la aplicación para compilarla. Debería ver la siguiente ventana en la que se valida una conexión correcta. Incluso puede ejecutar algunos comandos básicos de SQL como create table para validar la conectividad de la base de datos:

Comandos SQL

Como alternativa, podría crear un archivo DSN mediante el asistente que se inicia cuando no se proporciona ningún argumento de comando. Se recomienda que lo intente también con esta opción. Puede usar este archivo DSN para la automatización y protección de la configuración de autenticación:

Create DSN File

Felicidades. Ya se ha conectado correctamente a Azure SQL con C++ y ODBC en Windows. Puede seguir leyendo para hacer lo mismo en la plataforma Linux.

Conexión desde una aplicación de C o C++ de Linux

Puede desarrollar aplicaciones de C++ de Linux en Visual Studio. Para obtener más información, revise el blog siguiente: Visual C++ para el desarrollo de Linux.

Para la compilación para Linux, se necesitará un equipo remoto en el que se ejecute la distribución de Linux. Si no dispone de ninguno, puede configurar uno rápidamente mediante Azure Virtual Machines de Linux.

Para esta guía se supone que tiene configurada una distribución de Linux de Ubuntu 16.04. Los pasos indicados también se aplican a Ubuntu 15.10, Red Hat 6 y Red Hat 7.

Los pasos siguientes instalan las bibliotecas necesarias para SQL y ODBC para la distribución:

    sudo su
    sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/mssql-ubuntu-test/ xenial main" > /etc/apt/sources.list.d/mssqlpreview.list'
    sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
    apt-get update
    apt-get install msodbcsql
    apt-get install unixodbc-dev-utf16 #this step is optional but recommended*

Inicie Visual Studio. En Herramientas -> Opciones -> Multiplataforma -> Administrador de conexiones, agregue una conexión al cuadro de Linux:

Tools Options

Una vez establecida la conexión a través de SSH, cree una plantilla Empty project (Linux):

New project template

A continuación, puede agregar un nuevo archivo de código fuente C y reemplazarlo por este contenido. Con las API de ODBC SQLAllocHandle, SQLSetConnectAttr y SQLDriverConnect, debe poder inicializar y establecer una conexión con la base de datos. Al igual que con el ejemplo de ODBC de Windows, debe reemplazar la llamada SQLDriverConnect por los detalles de los parámetros de cadena de conexión de base de datos copiados anteriormente de Azure Portal.

     retcode = SQLDriverConnect(
        hdbc, NULL, "Driver=ODBC Driver 13 for SQL"
                    "Server;Server=<yourserver>;Uid=<yourusername>;Pwd=<"
                    "yourpassword>;database=<yourdatabase>",
        SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT);

Lo último que queda por hacer antes de la compilación es agregar odbc como dependencia de biblioteca:

Adding ODBC as an input library

Para iniciar la aplicación, abra Linux Console desde el menú Depurar:

Linux Console

Si la conexión se realizó correctamente, ahora debería ver el nombre de la base de datos actual en Linux Console:

Linux Console Window Output

Felicidades. Ha completado correctamente la guía y ya puede conectarse a Azure SQL Database desde C++ en plataformas Windows y Linux.

Obtención de la solución completa del tutorial de C o C++

Puede encontrar la solución GetStarted que contiene todos los ejemplos de este artículo en GitHub: