Как на С++ Билдере брать данные у Муsql
MySQL
как брать/записывать данные туда
со своей машины на С++ Билдере
пищите подробно пожалуйста
У Меня на сервере стоит FreeBSD , там установлен
MySQL
как брать/записывать данные туда
со своей машины на С++ Билдере
пищите подробно пожалуйста
Для начала попробуй через ODBC. У тебя в Winodws должен быть установлен драйвер для доступа к MySQL. Стандартно с Борландом он не поставляется. Создай в ODBC SystemDSN для доступа к mySQL.
В программе на С++ испльзуй компоненты ADO. У всех компонент ADO есть свойство ConnectionString. Если в визуальном режиме на него кликнуть, то запускается мастер подключения. Там все достаточно доступно. Коннектишся к mySQL и через sql запросы делаешь, что тебе нужно. Кроме sql там вообще много всяких вариоантов. Можно использовать TADOTable->Insert - для добавления,TADOTable->Edit - для изменения и т.д.
У Меня на сервере стоит FreeBSD , там установлен
MySQL
как брать/записывать данные туда
со своей машины на С++ Билдере
пищите подробно пожалуйста
Я пользуюсь native API. Может этот способ покажется кому-то не таким удобным, как всякие там ODBC и ADO, но мне, как человеку перешедшему с PHP на BCB, лучше способа и не придумать. В tutorial'e для MySQL есть неплохое описание как пользоваться native API В кратце следующие:
Мы подключаем необходимые header-файлы. В принципе достаточно
#include <mysql.h>
Потом следует объявить переменные, которые будут использоваться при обращении к базе
MYSQL_RES *Res;
MYSQL_ROW Row;
MYSQL_FIELD *Fields;
Дальше идет инициализация основной структуры и соединение с базой
Con=mysql_real_connect(Con,"Host","UserName","Password","Database",0,NULL,0);
// Подробное описание mysql_real_query смотрите в
// help'e. Могу только сказать, что лучше
// использовать её, нежели mysql_query
Если соединение успешное, то Con не равен NULL
в конце закрываем соединение через mysql_close(Con);
Простой пример выборки может выглядить так, только не следует всё копировать один в один, обрати внимание на
CountOfRows=mysql_num_rows(Res);
CountOfColumns=mysql_num_fields(Res);
...
Row=mysql_fetch_row(Res);
Вот пример функции:
{
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));}
}
Будут вопросы - обращайся