Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как на С++ Билдере брать данные у Муsql

6.4K
18 февраля 2005 года
DiViNe
27 / / 01.12.2004
У Меня на сервере стоит FreeBSD , там установлен
MySQL
как брать/записывать данные туда

со своей машины на С++ Билдере

пищите подробно пожалуйста
259
18 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by DiViNe
У Меня на сервере стоит FreeBSD , там установлен
MySQL
как брать/записывать данные туда

со своей машины на С++ Билдере

пищите подробно пожалуйста


Для начала попробуй через ODBC. У тебя в Winodws должен быть установлен драйвер для доступа к MySQL. Стандартно с Борландом он не поставляется. Создай в ODBC SystemDSN для доступа к mySQL.
В программе на С++ испльзуй компоненты ADO. У всех компонент ADO есть свойство ConnectionString. Если в визуальном режиме на него кликнуть, то запускается мастер подключения. Там все достаточно доступно. Коннектишся к mySQL и через sql запросы делаешь, что тебе нужно. Кроме sql там вообще много всяких вариоантов. Можно использовать TADOTable->Insert - для добавления,TADOTable->Edit - для изменения и т.д.

285
19 февраля 2005 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by DiViNe
У Меня на сервере стоит FreeBSD , там установлен
MySQL
как брать/записывать данные туда

со своей машины на С++ Билдере

пищите подробно пожалуйста



Я пользуюсь native API. Может этот способ покажется кому-то не таким удобным, как всякие там ODBC и ADO, но мне, как человеку перешедшему с PHP на BCB, лучше способа и не придумать. В tutorial'e для MySQL есть неплохое описание как пользоваться native API В кратце следующие:
Мы подключаем необходимые header-файлы. В принципе достаточно

 
Код:
#define __LCC__
#include <mysql.h>


Потом следует объявить переменные, которые будут использоваться при обращении к базе

 
Код:
MYSQL         *Con;
     MYSQL_RES     *Res;
     MYSQL_ROW      Row;
     MYSQL_FIELD   *Fields;


Дальше идет инициализация основной структуры и соединение с базой

 
Код:
Con=mysql_init(Con);
Con=mysql_real_connect(Con,"Host","UserName","Password","Database",0,NULL,0);
// Подробное описание mysql_real_query смотрите в  
// help'e. Могу только сказать, что лучше
// использовать её, нежели mysql_query


Если соединение успешное, то Con не равен NULL
в конце закрываем соединение через mysql_close(Con);

Простой пример выборки может выглядить так, только не следует всё копировать один в один, обрати внимание на
 
Код:
Res=mysql_store_result(Con);
 CountOfRows=mysql_num_rows(Res);
 CountOfColumns=mysql_num_fields(Res);
 ...
 Row=mysql_fetch_row(Res);


Вот пример функции:

Код:
if(Con!=NULL)
 {
    query=Edit1->Text;
    mysql_real_query(Con,query.c_str(),query.Length());
    f=mysql_errno(Con);
    if(f==0)
    {
      Res=mysql_store_result(Con);
      CountOfRows=mysql_num_rows(Res);
      CountOfColumns=mysql_num_fields(Res);
      StringGrid1->ColCount=1;
      StringGrid1->RowCount=1;
      StringGrid1->ColCount=CountOfColumns+1;
      StringGrid1->RowCount=CountOfRows+1;
      StringGrid1->FixedCols=1;
      StringGrid1->FixedRows=1;
      StatusBar1->Panels->Items[2]->Text=IntToStr(CountOfRows);
      StatusBar1->Panels->Items[4]->Text=IntToStr(CountOfColumns);
      Fields=mysql_fetch_fields(Res);
      for(i=0;i<CountOfColumns;i++)StringGrid1->Cells[i+1][0]=Fields.name;
      for(i=0;i<CountOfRows;i++)
       {
        StringGrid1->Cells[0][i+1]=IntToStr(i+1);
        Row=mysql_fetch_row(Res);
        for(j=0;j<CountOfColumns;j++)
        {
           StringGrid1->Cells[j+1][i+1]=Row[j];
        }
       }
    }
    else {ShowMessage("Error #: "+IntToStr(f)+char(13)+"Message: "+mysql_error(Con));}
 }


Будут вопросы - обращайся
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог