Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2010, 15:55   #1
badgo
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 21
Восклицание Mysql+Curl(В чем ошибка?)

Код:
Код:
#define __LCC__ 

#pragma comment(lib, "libmysql.lib") // подключаем библиотеку
#pragma comment(lib, "libcurl_imp.lib")

#include <mysql.h> // Заголовочный файл с описание функций
#include <stdio.h>
#include <conio.h>
#include <string>
#include <iostream>
#include "curl/curl.h"
#include <Windows.h>

using namespace std;

static char errorBuffer[CURL_ERROR_SIZE];
static string buffer;

static int writer(char *data, size_t size, size_t nmemb, string *buffer)
{
  int result = 0;
  if (buffer != NULL)
  {
    buffer->append(data, size * nmemb);
    result = size * nmemb;
  }
  return result;
}

void mysql(const char query[])
{
	
	//----------------------------------------------
	MYSQL mysql; // Дескриптор соединения

	const char host[] = "127.0.0.1"; // хост
	char user[] = "root"; // пользователь
	char passwd[] = "pass"; // пароль
	char db[] = "db"; // название базы данных
	int port = 3306; //  порт. Если порт у сервера MySQL не по умолчанию (3306), то нужно указывать конкретный номер порта

	mysql_init(&mysql);  // Инициализация
	mysql_real_connect(&mysql, host, user, passwd, db, port, NULL, 0); // соединение
 mysql_query(&mysql, query);    	
	mysql_close(&mysql); // Закрываем соединение
	//завершаем сессию
  
}

int main()
{
  	//----------------------------------
	CURL *curl;
    CURLcode result;
    curl = curl_easy_init();
    if (curl)
    {
      curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
      curl_easy_setopt(curl, CURLOPT_URL, "whatismyip.com/automation/n09230945.asp");
      curl_easy_setopt(curl, CURLOPT_HEADER, 0);
      curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
      curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
      result = curl_easy_perform(curl);
      
  	//--------------------------------------
	
	string query;
query ="UPDATE `servers` SET `mask`='";
query += buffer;
query += "' WHERE (`id`='1')";
mysql(query.c_str()); // Запрос
curl_easy_cleanup(curl);
		cout << query.c_str() << " OK!";
		
		getch();
  
  return 0;
}
}
Компилирует без ошибок,все проходит ровно,но изменений в базе нет...Подскажите что не так
badgo вне форума Ответить с цитированием
Старый 28.02.2010, 21:44   #2
badgo
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 21
По умолчанию

Теме АП!
badgo вне форума Ответить с цитированием
Старый 28.02.2010, 21:50   #3
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

во первых уверены ли вы что соединение с базой прошло успешно? смотрите что возвращают функции, во вторых уверены ли вы, что у вас есть данная таблица? в третьих если есть ошибки при заросе - их можно посмотреть

Код:
const char * ret = mysql_error(&mysql)
подпись
liljon вне форума Ответить с цитированием
Старый 01.03.2010, 12:43   #4
badgo
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 21
По умолчанию

Код:
#define __LCC__ // Объявляем директиву без которой программа не может работать. Можно конечно поключить windows.h, но это будет не красиво

#pragma comment(lib, "libmysql.lib") // подключаем библиотеку
#pragma comment(lib, "libcurl_imp.lib")

#include <mysql.h> // Заголовочный файл с описание функций
#include <stdio.h>
#include <conio.h>
#include <string>
#include <iostream>
#include "curl/curl.h"
#include <Windows.h>
#include <mysqld_error.h>

using namespace std;

static char errorBuffer[CURL_ERROR_SIZE];
static string buffer;

static int writer(char *data, size_t size, size_t nmemb, string *buffer)
{
  int result = 0;
  if (buffer != NULL)
  {
    buffer->append(data, size * nmemb);
    result = size * nmemb;
  }
  return result;
}

int mysql(const char query[])
{
	
	//----------------------------------------------
	MYSQL mysql; // Дескриптор соединения

	const char host[] = "127.0.0.1"; // хост
	char user[] = "root"; // пользователь
	char passwd[] = "pass"; // пароль
	char db[] = "db"; // название базы данных
	int port = 3306; //  порт. Если порт у сервера MySQL не по умолчанию (3306), то нужно указывать конкретный номер порта

	mysql_init(&mysql);  // Инициализация
	mysql_real_connect(&mysql, host, user, passwd, db, port, NULL, 0); // соединение
 mysql_query(&mysql, query);
cout << mysql_error(&mysql) <<endl;
	mysql_close(&mysql); // Закрываем соединение
	//завершаем сессию
  
if (mysql_real_connect == 0)
return 0;
else 
return 1;
}

int main()
{
  	//----------------------------------
	CURL *curl;
    CURLcode result;
    curl = curl_easy_init();
    if (curl)
    {
      curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
      curl_easy_setopt(curl, CURLOPT_URL, "whatismyip.com/automation/n09230945.asp");
      curl_easy_setopt(curl, CURLOPT_HEADER, 0);
      curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
      curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
      result = curl_easy_perform(curl);
      
  	//--------------------------------------
	
	string query;
query ="UPDATE `servers` SET `mask`='";
query += buffer;
query += "' WHERE (`id`='1')";
if(mysql(query.c_str()) == 0)
cout << "Zapros vipolnen";
else cout << "Zapros NE vipolnen";// Запрос
curl_easy_cleanup(curl);
//cout << query.c_str() << " OK!";

		
		getch();
  
  return 0;
}
}
Если я ничего не напутал(только изучаю C++)Соединение с базой не проходит,из-за этой ошибки
Цитата:
MySQL server has gone away
Как ее устранить?

Последний раз редактировалось badgo; 01.03.2010 в 12:45.
badgo вне форума Ответить с цитированием
Старый 01.03.2010, 20:34   #5
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

читайте http://dev.mysql.com/doc/refman/5.0/en/gone-away.html
подпись
liljon вне форума Ответить с цитированием
Старый 01.03.2010, 20:48   #6
badgo
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 21
По умолчанию

Спс,гуглил,и это находил...так и не понял в чем ошибка
badgo вне форума Ответить с цитированием
Старый 06.03.2010, 17:37   #7
badgo
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 21
По умолчанию

Ну помогите...нигде не могу найти ответ...
badgo вне форума Ответить с цитированием
Старый 06.03.2010, 21:20   #8
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

Ну как вам помочь еще можно? Проверте запущен ли у вас mysql сервер на 3306-ом порту, верны ли пароль и логин.
подпись
liljon вне форума Ответить с цитированием
Старый 07.03.2010, 09:01   #9
badgo
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 21
По умолчанию

Проверял не раз

--------------------------------------

Какое значение возвращает mysql_query(&mysql, query) и mysql_real_connect при удачном запросе/подключении?

Последний раз редактировалось badgo; 07.03.2010 в 09:43.
badgo вне форума Ответить с цитированием
Старый 09.03.2010, 20:47   #10
badgo
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 21
По умолчанию

Три точки-три тире-три точки
badgo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем ошибка? olegnaum Общие вопросы C/C++ 7 03.02.2010 12:58
В чем ошибка? Beka Помощь студентам 11 25.11.2009 15:36
В чем ошибка? hitman12 Паскаль, Turbo Pascal, PascalABC.NET 13 04.11.2009 12:38
В чем ошибка запроса query к MySQL? xxxsas SQL, базы данных 2 13.04.2009 09:55
Не работает MySQL. Подскажите, в чем проблема???? just me PHP 4 07.04.2009 15:50