Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 23.01.2011
Сообщений: 4

Перехожу с PHP на C++. Нужна помощь с MySQL и вообще базами

23.01.2011, 00:19. Показов 1445. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ. Если у кого есть исходник с примером соединения и вывода строк из БД MySQL киньте мне на spog@bk.ru если не сложно. Заранее благодарен.

Еще вопрос: прочитал документацию по установке базы данных.... вроде все правельно сделал. Одно но - при копировании нуджных фйлов база данных уже была задействована скриптами php. Возможна ли работа скриптов и PHP и C++ с однйо и тойже БД?

И послений: в инструкции написано 'подключить' *.lib файл к С++. Как это правельн осделать? Лично я просто скопировал его в папку LIB (в главной директории с C++). Если не сложно дайте совет по установке или напишите как правельно устанвоить БД.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2011, 00:19
Ответы с готовыми решениями:

Нужна помощь с рапределёнными базами
Есть центральная и 3 распределённых базы, пару недель назад с одной из распределённых баз перестали приходить налоговые в центральную, при...

SELECT с MySQL+php работают не очёнь.Точнее не работает вообще
Думаю,здесь сидят нормальные люди. if ($res = mysql_query("SELECT * FROM users WHERE 'username' = '{$_POST}';")) $result =...

php info нужна помощь новичку
Установил apache php mySQL файл phpinfo.php из папки htdocs при вводе адреса 127.0.0.1/phpinfo.php страница с параметрами настройки...

4
0 / 0 / 8
Регистрация: 07.12.2010
Сообщений: 46
23.01.2011, 10:06
Привет.
Вот кусочек кода для соединения с MySQL найденный в одной
старой программе. С MySQL уже давно не работаю, поэтому всех тонкостей уже не помню.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//--------------------------------------------------------------------
#include <windows.h>
 
#include <stdio.h>
#include <mysql.h>
//--------------------------------------------------------------------
typedef struct
{
   int shnp;
   char nnp[13];
} SSH;
//--------------------------------------------------------------------
#pragma argsused
 
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
               LPSTR lpCmdLine, int nCmdShow)
{
   MYSQL mysql;
   MYSQL_RES *res;
   MYSQL_ROW row;
 
   char host[61], user[17], db[13], password[10];
   char qstr[32 * 1024];
   int max_ssh;
   SSH *ssh;
 
   host = '192.168.34.21';
   db = 'asu';
   user = 'user';
   password = '********';
   //Соединение с сервером
   if (!(mysql_connect(&mysql, host, user, password)))
   {
      MessageBox(NULL, 'Невозможно связаться с сервером',
                 'Ошибка соединения', MB_OK);
      return GetLastError();
   }
   //Выбор DB
   if (mysql_select_db(&mysql, db))
   {
      MessageBox(NULL, 'Невозможно открыть базу даных',
                 'Ошибка открытия базы данных', MB_OK);
      return GetLastError();
   }
   strcpy(qstr, 'SELECT shnp, nnp FROM ssh '
                'WHERE BINARY typeprod IN ('А', 'К', 'к', 'п')');
   mysql_query(&mysql, qstr);
   //Результаты запроса
   if ((res = mysql_store_result(&mysql)) == NULL)
   {
      mysql_close(&mysql);
      return GetLastError();
   }
   max_ssh = mysql_num_rows(res);
   if (max_ssh == 0)
   {
      MessageBox(NULL, 'Справочник пуст',
                 'Ошибка получения данных', MB_OK);
      mysql_free_result(res);
      mysql_close(&mysql);
      return GetLastError();
   }
   ssh = malloc(sizeof(SSH) * max_ssh);
 
   for (i = 0; i < max_ssh; i++)
   {
      row = mysql_fetch_row(res);
      ssh[i].shnp = strtol(row[0], NULL, 10);
      strcpy(ssh[i].nnp, row[1]);
   }
   mysql_free_result(res);
 
   // ... и т.п.
 
   mysql_close(&mysql);
   free(ssh);
 
   return 0;
}
//-------------------------------------------------------------------
Удачи
0
0 / 0 / 0
Регистрация: 23.01.2011
Сообщений: 4
23.01.2011, 13:18  [ТС]
В общем извеняюсь за чайничество, код записал - при компиляции нескольок ошибок вылезло, такого рода:
C++
1
2
3
4
5
6
7
8
9
10
host = 'localhost';  // Lvalue required
db = 'earn';        // Lvalue required
user = 'root';     // Lvalue required
password = '';    // Lvalue required
 
max_ssh = mysql_num_rows(res); // Conversion may lose signinficant digits
 
ssh = malloc(sizeof(SSH) * max_ssh); // Cannot convert 'void *' to 'SSH *'
 
for (i = 0; i < max_ssh; i++) // Udefined symbol 'i'
В чем проблема? Неверная установка БД?
0
3 / 3 / 0
Регистрация: 12.07.2010
Сообщений: 128
23.01.2011, 15:21
У меня MySQL 4.0.21 на Win-XP.
система находится на C:MySQL. Так вот там папочка есть:
C:MySQLexamplesibmysqltest с тестовым примером на VC++.
(К Borland C прилепить libMySQL.lib мне не удалось, на VC++ все ОК.)
'Подключить' *.lib файл к С++ можно так: скоприовать libMySQL.lib
в папку с Вашим проектом и щелкнув правой кнопкой мышки по названию
проекта в окне лева (закладка FileView) выбрать пункт 'Add Files to Project...' (Типы файлов 'Library Files (.lib)') и выбрав тот самый
libMySQL.lib.

Может предыдущий пример тоже работает, но для соединения с MySQL
в примере используется код подобный следующему:
C++
1
2
3
4
5
if((myData = mysql_init((MYSQL*) 0)) &&
mysql_real_connect(myData, szHostName, szUserName, szUserPswd, szDataBase, iPort, szUnixSocket, iClientFlag))
{
//успешное соединение!
}
На счет ошибок: переменные на C надо обязательно сначало объявлять.
Например так:
C++
1
2
3
4
5
int i;
CHAR host[HOSTNAME_LENGTH + 1] = LOCAL_HOST;
CHAR db[64] = 'earn';
CHAR user[USERNAME_LENGTH + 1] = 'root';
CHAR password[64] = '';
следующие ошибки обходятся так:
C++
1
2
max_ssh = (int)mysql_num_rows(res);
ssh = (SHH)malloc(sizeof(SSH) * max_ssh);
Удачного кодинга!
0
0 / 0 / 0
Регистрация: 23.01.2011
Сообщений: 4
24.01.2011, 19:12  [ТС]
Спасибо, ошибки понял. Но не решил главную проблему - подключиться к БД. Появилось 2 вопроса:

1. Есть ли в C++ (или C++ Builder) уже установленные полностью БД?
2. Где можно достать ХОРОШИЙ учебник по C++ и MySQL в C++??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.01.2011, 19:12
Помогаю со студенческими работами здесь

перехожу с mysql на mysqli и столкнулся с проблемой
подскажите как тут mysql_field_name правильно изменить на mysqli, если просто заменяю mysql_field_name на mysqli_field_name, то получаю ...

Сравнение двух дат в PHP.Нужна помощь
Помогите!Как сравнить две даты &lt;input type=text name=paystartdate value='&lt;?=Ukrdate($r-&gt;paystartdate)?&gt;' size=10&gt; &lt;input...

Очень нужна помощь: перевод из python в php
сидела-сидела, ковыряла-ковыряла, ничего не получилось(( помогите, пожалуйста, сделать то же самое, но на php... моей благодарности не...

Нужна помощь в установке Apache 2 и Компилятора php
извените если не по теме не нашел куда написать. Вообщем стал ставить апач и компилятор по инструкции...

Перехожу с php на С++
Доброе время суток форумчане. Помогите подобрать таловую книгу по программированию на C++ в контексте создания сайтов. Я неплохо знаю php,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru