Verbinding maken met SQL Database met C en C++

Van toepassing op: Azure SQL Database

Dit bericht is gericht op C- en C++-ontwikkelaars die verbinding willen maken met Azure SQL Database. Het is onderverdeeld in secties, zodat u naar de sectie kunt gaan die het beste uw interesse vastlegt.

Vereisten voor de zelfstudie C/C++

Zorg ervoor dat u over de volgende zaken beschikt:

Azure SQL Database en SQL Server op virtuele machines

Azure SQL Database is gebouwd op Microsoft SQL Server en is ontworpen om een hoge beschikbaarheid, prestaties en schaalbare service te bieden. Er zijn veel voordelen voor het gebruik van Azure SQL via uw eigen database die on-premises wordt uitgevoerd. Met Azure SQL hoeft u uw database niet te installeren, in te stellen, te onderhouden of te beheren, maar alleen de inhoud en de structuur van uw database. Typische dingen waar we ons zorgen over maken met databases zoals fouttolerantie en redundantie, zijn allemaal ingebouwd.

Azure heeft momenteel twee opties voor het hosten van SQL Server-workloads: Azure SQL Database, database as a service en SQL Server op Virtual Machines (VM). We zullen niet in detail ingaan op de verschillen tussen deze twee, behalve dat Azure SQL Database uw beste keuze is voor nieuwe cloudtoepassingen om te profiteren van de kostenbesparingen en prestatieoptimalisatie die cloudservices bieden. Als u overweegt uw on-premises toepassingen te migreren of uit te breiden naar de cloud, werkt SQL Server op de virtuele Azure-machine mogelijk beter voor u. Laten we een Azure SQL Database maken om alles eenvoudig te houden voor dit artikel.

Technologieën voor gegevenstoegang: ODBC en OLE DB

Verbinding maken met Azure SQL Database is niet anders en er zijn momenteel twee manieren om verbinding te maken met databases: ODBC (Open Database-connectiviteit) en OLE DB (Object Linking and Embedding database). In de afgelopen jaren is Microsoft afgestemd op ODBC voor systeemeigen relationele gegevenstoegang. ODBC is relatief eenvoudig en ook veel sneller dan OLE DB. De enige kanttekening hier is dat ODBC een oude C-stijl-API gebruikt.

Stap 1: Uw Azure SQL Database maken

Zie de pagina Aan de slag voor meer informatie over het maken van een voorbeelddatabase. U kunt ook deze korte video van twee minuten volgen om een Azure SQL Database te maken met behulp van Azure Portal.

Stap 2: Verbindingsreeks ophalen

Nadat uw Azure SQL Database is ingericht, moet u de volgende stappen uitvoeren om verbindingsgegevens te bepalen en uw client-IP toe te voegen voor firewalltoegang.

Ga in Azure Portal naar uw ODBC-verbindingsreeks van Azure SQL Database met behulp van de verbindingsreeksen voor de database weergeven die worden vermeld als onderdeel van de overzichtssectie voor uw database:

ODBCConnectionString

ODBCConnectionStringProps

Kopieer de inhoud van de tekenreeks ODBC (Inclusief Node.js) [SQL-verificatie]. We gebruiken deze tekenreeks later om verbinding te maken vanuit onze C++ ODBC-opdrachtregelinterpreter. Deze tekenreeks bevat details zoals het stuurprogramma, de server en andere databaseverbindingsparameters.

Stap 3: Uw IP toevoegen aan de firewall

Ga naar de firewallsectie voor uw server en voeg uw client-IP toe aan de firewall met behulp van deze stappen om ervoor te zorgen dat we een geslaagde verbinding tot stand kunnen brengen:

AddyourIPWindow

Op dit moment hebt u uw Azure SQL Database geconfigureerd en bent u klaar om verbinding te maken vanuit uw C++-code.

Stap 4: Verbinding maken vanuit een Windows C/C++-toepassing

U kunt eenvoudig verbinding maken met uw Azure SQL Database met behulp van ODBC in Windows met behulp van dit voorbeeld dat wordt gebouwd met Visual Studio. In het voorbeeld wordt een ODBC-opdrachtregel-interpreter geïmplementeerd die kan worden gebruikt om verbinding te maken met onze Azure SQL Database. In dit voorbeeld wordt een DSN-bestand (Database Source Name File) gebruikt als opdrachtregelargument of als de uitgebreide verbindingsreeks die we eerder uit de Azure-portal hebben gekopieerd. Open de eigenschappenpagina voor dit project en plak de verbindingsreeks als een opdrachtargument, zoals hier wordt weergegeven:

DSN Propsfile

Zorg ervoor dat u de juiste verificatiegegevens voor uw database opgeeft als onderdeel van die databaseverbindingsreeks.

Start de toepassing om deze te bouwen. In het volgende venster wordt een geslaagde verbinding gevalideerd. U kunt zelfs enkele eenvoudige SQL-opdrachten uitvoeren, zoals een tabel maken om uw databaseconnectiviteit te valideren:

SQL Commands

U kunt ook een DSN-bestand maken met behulp van de wizard die wordt gestart wanneer er geen opdrachtargumenten worden opgegeven. We raden u aan deze optie ook uit te proberen. U kunt dit DSN-bestand gebruiken voor automatisering en het beveiligen van uw verificatie-instellingen:

Create DSN File

Gefeliciteerd! U hebt nu verbinding gemaakt met Azure SQL met behulp van C++ en ODBC in Windows. U kunt ook verder lezen om hetzelfde te doen voor het Linux-platform.

Stap 5: Verbinding maken vanuit een Linux C/C++-toepassing

Als u het nieuws nog niet hebt gehoord, kunt u met Visual Studio ook C++ Linux-toepassing ontwikkelen. Meer informatie over dit nieuwe scenario vindt u in de blog Visual C++ voor Linux-ontwikkeling . Als u voor Linux wilt bouwen, hebt u een externe computer nodig waarop uw Linux-distributie wordt uitgevoerd. Als u er nog geen hebt, kunt u er snel een instellen met behulp van virtuele Linux Azure-machines.

Voor deze zelfstudie gaan we ervan uit dat u een Ubuntu 16.04 Linux-distributie hebt ingesteld. De stappen hier moeten ook van toepassing zijn op Ubuntu 15.10, Red Hat 6 en Red Hat 7.

Met de volgende stappen installeert u de bibliotheken die nodig zijn voor SQL en ODBC voor uw distributie:

    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*

Start Visual Studio. Voeg onder Extra -> Opties -> Platformoverschrijdend -> Verbindingsbeheer een verbinding toe aan uw Linux-vak:

Tools Options

Nadat de verbinding via SSH tot stand is gebracht, maakt u een sjabloon leeg project (Linux):

New project template

Vervolgens kunt u een nieuw C-bronbestand toevoegen en vervangen door deze inhoud. Met behulp van de ODBC-API's SQLAllocHandle, SQLSetConnectAttr en SQLDriverConnect moet u een verbinding met uw database kunnen initialiseren en tot stand brengen. Net als bij het Windows ODBC-voorbeeld moet u de SQLDriverConnect-aanroep vervangen door de details van de parameters voor de databaseverbindingsreeks die eerder zijn gekopieerd uit 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);

Het laatste wat u moet doen voordat u compileert, is odbc toevoegen als bibliotheekafhankelijkheid:

Adding ODBC as an input library

Als u uw toepassing wilt starten, opent u de Linux-console vanuit het menu Foutopsporing :

Linux Console

Als de verbinding is geslaagd, ziet u nu de naam van de huidige database in de Linux-console:

Linux Console Window Output

Gefeliciteerd! U hebt de zelfstudie voltooid en kunt nu vanuit C++ verbinding maken met uw Azure SQL Database op Windows- en Linux-platforms.

De volledige C/C++-zelfstudieoplossing ophalen

U vindt de GetStarted-oplossing met alle voorbeelden in dit artikel op GitHub:

Volgende stappen

Aanvullende bronnen