Подключение к базе данных с использованием C / C ++
SQL (язык структурированных запросов) - это язык четвертого поколения (4GL), который используется для определения, управления и контроля СУБД (системы управления реляционными базами данных).
Прежде чем приступить к основной статье, давайте познакомимся с используемыми инструментами.
Компилятор: Code :: Blocks IDE с компилятором MinGW
Ссылка для скачивания: Двоичная загрузка
Code :: Blocks - это кросс-компилятор (он может работать на любой платформе, такой как Windows, Linux и Mac), и его можно загрузить бесплатно. Эта IDE специально разработана для языков C и C ++ и проста в использовании.API: мы собираемся использовать библиотеку SQLAPI ++.
Ссылка для скачивания: Скачать SQLAPI
SQLAPI ++ - это библиотека C ++ (в основном набор файлов заголовков) для доступа к нескольким базам данных SQL (Oracle, SQL Server, DB2, Sybase, Informix, InterBase, SQLBase, MySQL, PostgreSQL, SQLite, SQL Anywhere и ODBC). Это легко реализовать и просто.
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 шага:
- Подключение к базе данных (и обработка ошибок)
Код:// 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;
}
Выход:
Мы связаны! Мы отключены!
- Выполнение простой команды 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, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.