Connettersi al database SQL tramite C e C++

Si applica a: Database SQL di Azure

Questo post è destinato agli sviluppatori C e C++ che tentano di connettersi a Azure SQL Database. È suddiviso in sezioni, pertanto è possibile passare alla sezione desiderata.

Prerequisiti per l'esercitazione su C/C++

Assicurarsi di avere quanto segue:

Database SQL di Azure ed SQL Server nelle macchine virtuali

Azure SQL database è basato su Microsoft SQL Server ed è progettato per offrire un servizio a disponibilità elevata, prestazioni e scalabilità. Esistono molti vantaggi per l'uso di Azure SQL nel database proprietario in esecuzione in locale. Con Azure SQL non è necessario installare, configurare, gestire o gestire il database, ma solo il contenuto e la struttura del database. Alcuni elementi tipici dei database che destano preoccupazione, ad esempio la ridondanza e la tolleranza di errore, sono incorporati.

Azure offre attualmente due opzioni per ospitare carichi di lavoro di SQL Server: database Azure SQL, database come servizio e SQL Server in Macchine virtuali (VM). Non verranno fornite informazioni dettagliate sulle differenze tra queste due, ad eccezione del fatto che Azure SQL Database è la migliore scommessa per le nuove applicazioni basate sul cloud per sfruttare i risparmi sui costi e l'ottimizzazione delle prestazioni offerti dai servizi cloud. Se si intende eseguire la migrazione o estendere le applicazioni locali al cloud, SQL server nella macchina virtuale di Azure può rappresentare l'opzione più appropriata. Per mantenere le cose semplici per questo articolo, verrà creato un database Azure SQL.

Tecnologie di accesso ai dati: ODBC e OLE DB

La connessione al database Azure SQL non è diversa e attualmente sono disponibili due modi per connettersi ai database: ODBC (connettività di database aperti) e OLE DB (collegamento a oggetti e database di incorporamento). Negli ultimi anni Microsoft si è allineata a ODBC per l'accesso ai dati relazionali nativi. ODBC è relativamente semplice e molto più veloce rispetto a OLE DB. Si tenga tuttavia presente che ODBC usa una vecchia API di tipo C.

Passaggio 1: Creazione del database Azure SQL

Vedere la pagina introduttiva per informazioni su come creare un database di esempio. In alternativa, è possibile seguire questo breve video di due minuti per creare un database Azure SQL usando il portale di Azure.

Passaggio 2: Ottenere la stringa di connessione

Dopo il provisioning del database Azure SQL, è necessario eseguire la procedura seguente per determinare le informazioni di connessione e aggiungere l'indirizzo IP client per l'accesso al firewall.

In portale di Azure passare alla stringa di connessione ODBC del database Azure SQL usando le stringhe di connessione Mostra database elencate come parte della sezione panoramica per il database:

ODBCConnectionString

ODBCConnectionStringProps

Copiare il contenuto della stringa ODBC (include Node.js) [SQL authentication]. Questa stringa verrà usata successivamente per connettersi dall'interprete della riga di comando ODBC di C++ . La stringa include informazioni dettagliate quali il driver, il server e altri parametri di connessione al database.

Passaggio 3: Aggiungere l'INDIRIZZO IP al firewall

Passare alla sezione firewall per il server e aggiungere l'IP client al firewall usando questa procedura per assicurarsi di poter stabilire una connessione riuscita:

AddyourIPWindow

A questo punto, è stato configurato il database Azure SQL e si è pronti per connettersi dal codice C++.

Passaggio 4: Connessione da un'applicazione C/C++ per Windows

È possibile connettersi facilmente al database Azure SQL usando ODBC in Windows usando questo esempio che compila con Visual Studio. L'esempio implementa un interprete della riga di comando ODBC che può essere usato per connettersi al database Azure SQL. In questo esempio viene accettato come argomento della riga di comando un file DSN (Database Source Name ) oppure la stringa di connessione dettagliata copiata in precedenza dal portale di Azure. Visualizzare la pagina delle proprietà per il progetto e incollare la stringa di connessione come argomento di comando, come illustrato di seguito:

Propsfile DNS

Assicurarsi di specificare i dettagli di autenticazione corretti per il database come parte della stringa di connessione al database.

Avviare l'applicazione per compilarla. Se la connessione ha esito positivo, verrà visualizzata la finestra seguente. È anche possibile eseguire alcuni semplici comandi SQL come crea tabella per convalidare la connettività al database:

Comandi SQL

In alternativa, è possibile creare un file DSN mediante la procedura guidata avviata quando non è specificato alcun argomento di comando. Si consiglia di provare anche questa opzione. È possibile usare questo file DSN per l'automazione e per proteggere le impostazioni di autenticazione:

Creare un file DSN

Congratulazioni! È stata correttamente stabilita una connessione ad Azure SQL mediante C++ e ODBC in Windows. È possibile continuare la lettura per eseguire la stessa operazione sulla piattaforma Linux.

Passaggio 5: Connessione da un'applicazione C/C++ per Linux

Nel caso in cui non hai ancora sentito le notizie, Visual Studio ora consente di sviluppare anche applicazioni Linux C++. Per informazioni su questo nuovo scenario, vedere il blog Visual C++ for Linux Development (Visual C++ per sviluppo di applicazioni Linux). Per la compilazione per Linux è necessario un computer remoto in cui è in esecuzione la distribuzione Linux. Se non ne è disponibile uno, è possibile configurare rapidamente usando macchine virtuali di Azure Linux.

Per questa esercitazione, si supponga di avere configurata una distribuzione di Linux Ubuntu 16.04. I passaggi qui di seguito si applicano anche a Ubuntu 15.10, Red Hat 6 e Red Hat 7.

I passaggi seguenti consentono di installare le librerie necessarie per ODBC ed SQL per la distribuzione:

    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*

Avviare Visual Studio. In Strumenti -> Opzioni - Multipiattaforma ->> Gestione connessioni aggiungere una connessione alla casella Linux:

Opzioni degli strumenti

Dopo aver stabilito la connessione tramite SSH, creare un modello di progetto vuoto (Linux):

Nuovo modello di progetto

È quindi possibile aggiungere un nuovo file di origine C e sostituirlo con questo contenuto. Tramite le API ODBC SQLAllocHandle SQLSetConnectAttr ed SQLDriverConnect dovrebbe essere possibile inizializzare e stabilire una connessione al database. Come nell'esempio di ODBC per Windows, è necessario sostituire la chiamata SQLDriverConnect con i dettagli dei parametri della stringa di connessione al database copiata in precedenza dal portale di Azure.

     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);

L'ultima operazione da eseguire prima della compilazione consiste nell'aggiungere odbc come dipendenza della libreria:

Aggiunta di ODBC come libreria di input

Per avviare l'applicazione, visualizzare la console Linux nel menu Debug:

Console Linux

Se la connessione è stata stabilita correttamente, viene visualizzato il nome del database corrente stampato nella console Linux:

Output della finestra della console Linux

Congratulazioni! È stata completata l'esercitazione e ora è possibile connettersi al database Azure SQL da C++ nelle piattaforme Windows e Linux.

Ottenere la soluzione completa per l'esercitazione su C/C++

La soluzione GetStarted contenente tutti gli esempi riportati in questo articolo è disponibile su GitHub:

Passaggi successivi

Risorse aggiuntive