Форум программистов, компьютерный форум CyberForum.ru

Работа с mysql - C++

Восстановить пароль Регистрация
 
MickeyBlueEyes
Студент
 Аватар для MickeyBlueEyes
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
15.08.2013, 18:59     Работа с mysql #1
Всем привет ) Тута нада к базе запрос делать, а выбирает только первую запись )

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
#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>
 
int main(int a, char ** argv)
{
  MYSQL * conn;
  MYSQL_RES * res;
  MYSQL_ROW row;
   
  char * server = "localhost",           
       * user = "root",
       * password = "*****",
       * database = "test";
     
  conn = mysql_init(NULL);
 
  if(!mysql_real_connect(conn, 
                         server,
                         user, 
                         password, 
                         database, 
                         0,                              
                         NULL,
                         0)
                                                
    )
  {
    fprintf(stderr, "%s\n", mysql_error(conn));
    exit(1);
  }
 
  if (mysql_query(conn, "select mail, password from clients")) 
  {
    fprintf(stderr, "%s\n", mysql_error(conn));
    exit(1);
  }
 
  res = mysql_store_result(conn);
 
  while((row = mysql_fetch_row(res)) != NULL)   
  {
    printf("mail = %s\npass = %s\n", row[0], row[1]);
  }
 
  mysql_free_result(res);
 
  mysql_close(conn);
    
  return 0;
    
}
Вроде всё как по справочнику ) Но выбирает только первую запись в цикле и вылетает ;(
Буду благодарен за помощь, может кто сталкивался )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2013, 18:59     Работа с mysql
Посмотрите здесь:

C++ MySQL и C++
C++ Работа со структурами, работа с векторами.
C++ Работа с битами И Работа с символьными данными
C++ MySQL
С++ и MySQL C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,572
Записей в блоге: 17
16.08.2013, 02:11     Работа с mysql #2
C "чем" вылетает ?
MickeyBlueEyes
Студент
 Аватар для MickeyBlueEyes
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
16.08.2013, 12:49  [ТС]     Работа с mysql #3
Цитата Сообщение от Avazart Посмотреть сообщение
C "чем" вылетает ?
Успешно заканчивается программа, без каких либо ошибок, а выводит только первую запись (
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,572
Записей в блоге: 17
16.08.2013, 14:03     Работа с mysql #4
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
using namespace std;
//---------------------------------------------------------------------------
int main()
{
    system("chcp 1251");
 
    mysql_server_init(0, NULL, NULL);
    MYSQL* db = mysql_init(NULL);
 
if (!mysql_real_connect(db,"localhost","root","password","database_name",0,NULL,0))
    {
        cout<<"Ошибка соединения с сервером: Error: ";
        cout<<mysql_error(db);  //О получении ошибок см. ниже
    }
else
 {
     mysql_query(db, "SELECT * FROM database_name.table_name");
     MYSQL_RES* result = mysql_store_result(db);
 
     for(int r=0; r<result->row_count; ++r)
        {
            MYSQL_ROW row = mysql_fetch_row(result);
            //row - массив, содержащий значения полей записи
            for(size_t f=0; f< result->field_count; ++f)
                {
                     if(row[f]) cout << row[f] << '\t';
                     else       cout << "NULL" << '\t';
                }
            cout<<endl;
        }
 }
 
 mysql_close(db);
 mysql_server_end();
 
 cout<<endl;
 
 system("pause");
 
 return 0;
}
//---------------------------------------------------------------------------
Добавлено через 12 минут
Ну или так


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//...
else
 {
     mysql_query(db, "SELECT * FROM database_name.table_name");
     MYSQL_RES* result = mysql_store_result(db);
 
     unsigned int num_fields= mysql_num_fields(result);
 
     MYSQL_ROW row;
 
     while(row = mysql_fetch_row(result))
        {
            for(size_t f=0; f< num_fields; ++f)
                {
                     if(row[f]) cout << row[f] << '\t';
                     else       cout << "NULL" << '\t';
                }
            cout<<endl;
        }
 }
 //...
Добавлено через 2 минуты
http://dev.mysql.com/doc/refman/5.6/...fetch-row.html
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
16.08.2013, 14:30     Работа с mysql #5
MickeyBlueEyes, Да ты наверно не ту функцию используешь для вывода или в бд всего одна строка.
Yandex
Объявления
16.08.2013, 14:30     Работа с mysql
Ответ Создать тему
Опции темы

Текущее время: 13:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru