Connettersi a un database SQL tramite C e C++
Si applica a:Database SQL di Azure
Questo post è destinato agli sviluppatori C e C++ che vogliono connettersi al database SQL di Azure. È suddiviso in sezioni, pertanto è possibile passare alla sezione desiderata.
Prerequisiti per l'esercitazione su C/C++
Assicurarsi di avere quanto segue:
- Un account Azure attivo. Se non si ha un account, è possibile iscriversi per ottenere una versione di valutazione gratuita di Azure.
- Visual Studio. Per compilare ed eseguire questo esempio, è necessario installare i componenti del linguaggio C++.
- Sviluppo di Linux per Visual Studio. Se si esegue lo sviluppo su Linux, è anche necessario installare l'estensione di Visual Studio per Linux.
Database SQL di Azure ed SQL Server nelle macchine virtuali
Il database SQL di Azure si basa su Microsoft SQL Server ed è progettato per garantire un servizio efficiente, scalabile e a disponibilità elevata. L'uso di Azure SQL presenta diversi vantaggi rispetto all'uso del database proprietario in esecuzione in locale. Con Azure SQL non è necessario installare, configurare, conservare o gestire il database, ma solo il contenuto e la struttura. Alcuni elementi tipici dei database che destano preoccupazione, ad esempio la ridondanza e la tolleranza di errore, sono incorporati.
Azure attualmente offre due opzioni per l'hosting dei carichi di lavoro su SQL Server: database SQL di Azure, database come servizio e SQL Server in macchine virtuali (VM). Non verranno qui descritte nel dettaglio le differenze tra queste due opzioni. Il database SQL di Azure rappresenta tuttavia la soluzione migliore per le nuove applicazioni basate sul cloud per sfruttare il risparmio sui costi e l'ottimizzazione delle prestazioni offerte 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 semplicità, in questo articolo creiamo un database SQL di Azure.
Tecnologie di accesso ai dati: ODBC e OLE DB
La connessione al database SQL di Azure è del tutto analoga e attualmente sono disponibili due modi per collegarsi ai database: ODBC (Open Database Connectivity) e OLE DB (Object Linking and Embedding Database). 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 di un database SQL di Azure
Vedere la pagina introduttiva per informazioni su come creare un database di esempio. In alternativa, è possibile guardare questo breve video di due minuti per creare un database SQL di Azure tramite il portale di Azure.
Passaggio 2: Ottenere la stringa di connessione
Dopo aver eseguito il provisioning del database SQL di Azure, è necessario eseguire la seguente procedura per determinare le informazioni di connessione e aggiungere l'IP client per l'accesso al firewall.
Nel portale di Azure passare alla stringa di connessione ODBC del database SQL di Azure usando l'opzione Mostra stringhe di connessione del database elencata come parte della sezione relativa alle informazioni generali del database:
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 relativa al firewall del server e aggiungere l'IP client al firewall seguendo i passaggi seguenti per assicurarsi di stabilire correttamente la connessione:
A questo punto, il database SQL di Azure è stato configurato ed è possibile collegarsi dal codice C++.
Passaggio 4: Connessione da un'applicazione C/C++ per Windows
È possibile connettersi facilmente al database SQL di Azure tramite ODBC su Windows seguendo questo esempio compilato con Visual Studio. Nell'esempio viene implementato un interprete della riga di comando ODBC, che può essere usato per connettersi al database SQL di Azure. 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:
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:
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:
Complimenti. È 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
Per chi non lo sapesse, Visual Studio ora consente di sviluppare anche applicazioni C++ per Linux. 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 si ha a disposizione un computer remoto con Linux, è possibile configurarlo rapidamente seguendo i passaggi presenti nell'articolo Macchine virtuali di Linux in Azure.
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 di Linux:
Dopo aver stabilito la connessione tramite SSH, creare un modello di progetto vuoto (Linux):
È 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:
Per avviare l'applicazione, visualizzare la console Linux nel menu Debug:
Se la connessione è stata stabilita correttamente, viene visualizzato il nome del database corrente stampato nella console Linux:
Complimenti. L'esercitazione è stata completata ed è ora possibile connettersi al database SQL di Azure da C++ su 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:
- Esempio di ODBC di C++ per Windows, scaricare l'esempio di ODBC di C++ per Windows per connettersi ad Azure SQL
- Esempio di ODBC di C++ per Linux, scaricare l'esempio di ODBC di C++ per Linux per connettersi ad Azure SQL
Passaggi successivi
- Rivedere l'articolo Panoramica dello sviluppo di database SQL
- Per altre informazioni, vedere le informazioni di riferimento sulle API ODBC
Risorse aggiuntive
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per