Подключение к базе данных с использованием C / C ++

Опубликовано: 15 Июля, 2021

SQL (язык структурированных запросов) - это язык четвертого поколения (4GL), который используется для определения, управления и контроля СУБД (системы управления реляционными базами данных).

Прежде чем приступить к основной статье, давайте познакомимся с используемыми инструментами.

  1. Компилятор: Code :: Blocks IDE с компилятором MinGW

    Ссылка для скачивания: Двоичная загрузка
    Code :: Blocks - это кросс-компилятор (он может работать на любой платформе, такой как Windows, Linux и Mac), и его можно загрузить бесплатно. Эта IDE специально разработана для языков C и C ++ и проста в использовании.

  2. API: мы собираемся использовать библиотеку SQLAPI ++.



    Ссылка для скачивания: Скачать SQLAPI

    SQLAPI ++ - это библиотека C ++ (в основном набор файлов заголовков) для доступа к нескольким базам данных SQL (Oracle, SQL Server, DB2, Sybase, Informix, InterBase, SQLBase, MySQL, PostgreSQL, SQLite, SQL Anywhere и ODBC). Это легко реализовать и просто.

  3. OCCI: интерфейс вызова Oracle C ++

    Ссылка для скачивания: Скачать OCCI C ++
    OCCI - это интерфейс, разработанный компанией ORACLE, занимающейся базами данных, который определяет удобный интерфейс для программиста на C ++ для доступа к базе данных Oracle с классами с использованием параметров, напоминающих операторы SQL. Интерфейс существует для ORACLE 9i, ORACLE 10 и поставляется с Oracle.

Мы должны загрузить и установить три указанных выше (если у нас их нет). Теперь мы почти готовы к старту.

Некоторые настройки перед запуском:

-> Откройте код :: блоки IDE и перейдите или щелкните по настройкам -> настройки компилятора и отладчика (теперь вы увидите глобальные настройки компилятора)



-> Теперь нажмите « Настройки компоновщика » в настройках компоновщика, нажмите кнопку ДОБАВИТЬ и добавьте следующее

Для ОС Windows :

Код:

C: SQLAPI lib libsqlapiddll.a

C: Program Files CodeBlocks MinGW lib libuser32.a

C: Program Files CodeBlocks MinGW lib libversion.a

C: Program Files CodeBlocks MinGW lib liboleaut32.a

C: Program Files CodeBlocks MinGW lib libole32.a

Они будут найдены в вашем SQLAPI ++ (если вы не распаковали на диск C :, выберите соответствующее место и добавьте упомянутые файлы в настройки компоновщика).

Приведенный выше код используется для добавления файлов библиотеки для соединения программы C / C ++ с SQLAPI.

В основном это 2 шага:

    1. Подключение к базе данных (и обработка ошибок)
      Код:




      // C++ pgroram for connecting to database (and error handling)
      #include<stdio.h>
      #include<SQLAPI.h> // main SQLAPI++ header
      int main( int argc, char * argv[])
      {
      // create connection object to connect to database
      SAConnection con;
      try
      {
      // connect to database
      // in this example, it is Oracle,
      // but can also be Sybase, Informix, DB2
      // SQLServer, InterBase, SQLBase and ODBC
      con.Connect ( "test" , // database name
      "tester" , // user name
      "tester" , // password
      SA_Oracle_Client); //Oracle Client
      printf ( "We are connected! " );
      // Disconnect is optional
      // autodisconnect will occur in destructor if needed
      con.Disconnect();
      printf ( "We are disconnected! " );
      }
      catch (SAException & x)
      {
      // SAConnection::Rollback()
      // can also throw an exception
      // (if a network error for example),
      // we will be ready
      try
      {
      // on error rollback changes
      con.Rollback ();
      }
      catch (SAException &)
      {
      }
      // print error message
      printf ( "%s " , ( const char *)x.ErrText());
      }
      return 0;
      }

      Выход:

       Мы связаны!
      Мы отключены!
      

  1. Выполнение простой команды SQL
    Теперь мы постараемся выполнить простой SQL-запрос. Во-первых, создадим таблицу для базы данных:

    создать таблицу tb1 (номер идентификатора, имя varchar (20);

    Теперь установите соединение с базой данных, затем, после вашего con.connect; вы должны использовать метод cmd.setCommandText для передачи запроса в базу данных, как показано ниже:

     con.Connect («тест», «тестер», «тестер», SA_Oracle_Client);
    cmd.setCommandText ("создать таблицу tb1 (номер идентификатора, имя varchar (20));");

    и теперь, чтобы выполнить запрос, мы должны использовать следующую команду:

    cmd.Execute ();

    Полный код:




    #include<stdio.h>
    #include <SQLAPI.h> // main SQLAPI++ header
    int main( int argc, char * argv[])
    {
    SAConnection con; // connection object to connect to database
    SACommandcmd; // create command object
    try
    {
    // connect to database (Oracle in our example)
    con.Connect( "test" , "tester" , "tester" , SA_Oracle_Client);
    // associate a command with connection
    // connection can also be specified in SACommand constructor
    cmd.setConnection(&con);
    // create table
    cmd.setCommandText( "create table tbl(id number, name varchar(20));" );
    cmd.Execute();
    // insert value
    cmd.setCommandText( "Insert into tbl(id, name) values (1,”Vinay”)" );
    cmd.setCommandText( "Insert into tbl(id, name) values (2,”Kushal”)" );
    cmd.setCommandText( "Insert into tbl(id, name) values (3,”Saransh”)" );
    cmd.Execute();
    // commit changes on success
    con.Commit();
    printf ( "Table created, row inserted! " );
    }
    catch (SAException &x)
    {
    // SAConnection::Rollback()
    // can also throw an exception
    // (if a network error for example),
    // we will be ready
    try
    {
    // on error rollback changes
    con.Rollback();
    }
    catch (SAException &)
    {
    }
    // print error message
    printf ( "%s " , ( const char *)x.ErrText());
    }
    return 0;
    }

Как мы знаем, Oracle не фиксируется автоматически (фиксация - это постоянное отражение данных в базе данных), поэтому мы должны зафиксировать это.

 con.Commit ();

и аналогичным образом мы можем откатить транзакции при возникновении исключения, поэтому для этого мы используем:

 con.Rollback ();

Для удаления строки используем эту команду.

 cmd.setCommandText ("удалить из tb1, где id = 2");

Таким образом, к концу этой статьи мы узнали, как подключить вашу программу C / C ++ к базе данных и выполнять манипуляции.

Эта статья предоставлена Vinay Garg . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью и отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.