ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

не компилируется mysql.h
  #1  
Старый 28.01.2009, 18:02
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию не компилируется mysql.h

винда, visual studio 6

PHP код:
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"

MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;

void exiterr(int exitcode)
{
  
fprintf(stderr"%s\n"mysql_error(&mysql));
  exit(
exitcode);
}

int main()
{
  
uint i 0;

  if (!(
mysql_connect(&mysql,"host","username","password")))
     
exiterr(1);
  if (
mysql_select_db(&mysql,"payroll")) exiterr(2);
  if (
mysql_query(&mysql,"SELECT name,rate FROM emp_master"))
     
exiterr(3);
  if (!(
res mysql_store_result(&mysql))) exiterr(4);
  while((
row mysql_fetch_row(res))) {
    for (
i=mysql_num_fields(res); i++)
      
printf("%s\n",row[i]);
  }
  if (!
mysql_eof(res)) exiterr(5);
  
mysql_free_result(res);
  
mysql_close(&mysql);

PHP код:
--------------------Configurationdb2 Win32 Debug--------------------
Compiling...
main.cpp
c
:\cpp\db2\mysql_com.h(175) : error C2146syntax error missing ';' before identifier 'fd'
c:\cpp\db2\mysql_com.h(175) : error C2501'SOCKET' missing storage-class or type specifiers
c
:\cpp\db2\mysql_com.h(175) : error C2501'fd' missing storage-class or type specifiers
c
:\cpp\db2\mysql_com.h(339) : error C2065'SOCKET' undeclared identifier
c
:\cpp\db2\mysql_com.h(339) : error C2146syntax error missing ')' before identifier 's'
c:\cpp\db2\mysql_com.h(340) : error C2059syntax error ')'
c:\cpp\db2\main.cpp(19) : error C2065'mysql_connect' undeclared identifier
Error executing cl
.exe
в чем может быть основная проблема?
mysql api может быть ориентировано на линукс?

Последний раз редактировалось Дикс; 28.01.2009 в 18:05..
 
Ответить с цитированием

  #2  
Старый 28.01.2009, 18:13
herfleisch
Участник форума
Регистрация: 07.01.2009
Сообщений: 237
Провел на форуме:
745649

Репутация: 97
Отправить сообщение для herfleisch с помощью ICQ
По умолчанию

У тебя же чётко всё написано: пропущен символ ";", ")" и т.д. и номер строки указан. Открой библиотеку и посмотри. По возможности исправь.
 
Ответить с цитированием

  #3  
Старый 28.01.2009, 18:15
oRb
Members of Antichat - Level 5
Регистрация: 09.05.2008
Сообщений: 304
Провел на форуме:
7875940

Репутация: 2362
По умолчанию

Подключи winsock2.h
Не уверен, но возможно.
 
Ответить с цитированием

  #4  
Старый 28.01.2009, 18:42
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Дикс, во-первых, ты на винде, чтобы нормально можно было работать в консоли под винды обязательно нужно включить windows.h - именно тут идут определения сложных типов данных таких, как SOCKET и т.д. Это тебя избавит от ряда ошибок. Во-вторых, нужно обязательно прилинковать libmysql.lib к проектy. В-третьих - mysql_connect уже нельзя использовать... Это только пережиток семплов... Девелоперы её запретили как устаревшую, есть альтернатива - mysql_real_connect. Давай пробуй... Ниже линк на мой проект под VS 6.0 - тут всё компилится.

http://groundhog.ru/mysql.rar

Код:
#pragma comment(lib,"libmysql.lib")

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include "mysql.h"

MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;

void exiterr (int exitcode) {
	fprintf(stderr, "%s\n", mysql_error(&mysql));
	exit(exitcode);
}

int main () {
	unsigned int i = 0;

	mysql_init(&mysql);

	if (!mysql_real_connect(&mysql, "localhost", "root", "!root!", "test", 0, NULL, 0)) exiterr(1);
	if (mysql_query(&mysql, "SELECT name,rate FROM emp_master")) exiterr(3);
	if (!(res = mysql_store_result(&mysql))) exiterr(4);

	while((row = mysql_fetch_row(res)))
		for (i=0 ; i < mysql_num_fields(res); i++)
			printf("%s\n", row[i]);

	if (!mysql_eof(res)) exiterr(5);

	mysql_free_result(res);
	mysql_close(&mysql);

	return 0;
}
Да! И не забывай про http://phpclub.ru/mysql/doc/c-api-functions.html, всё равно ты не напишешь сходу приложения для работы с мусклом не глядя в шпаргалку...
 
Ответить с цитированием

  #5  
Старый 28.01.2009, 20:31
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

наконец-то заработало!
сначала исправил свой пример, а затем начал использовать вышеуказанный.
*череда поросячьего визга*

*ушол писать поисковик
 
Ответить с цитированием

  #6  
Старый 28.01.2009, 20:42
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Удачки
 
Ответить с цитированием

  #7  
Старый 28.01.2009, 22:01
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

Цитата:
При использовании совместно с mysql_store_result() функция mysql_eof() всегда будет возвращать TRUE.
читаю тут доки.
получается нет смысла запускать mysql_eof() как в примере groundhog - ведь всё уже выбрано с помощью mysql_store_result()

тока мне непонятно - че выбрано? если потом приходится в цикле выбирать из res с помощью mysql_fetch_row()

что такое res?
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ