Добавлен , опубликован
Программирование
Язык:
C++
Потребовалось мне тут юзануть MySQL в С++ и получилось вот что
[22:54:36] Мулюкин Алексей: ****
[22:50:52] +++: ну
[22:54:36] Мулюкин Алексей: это жопа
[22:54:53] +++: не сомневался
[22:56:29] Мулюкин Алексей: я не смогу совладать с этой фигней(
[22:56:43] +++: никто не сможет)))
[22:56:49] Мулюкин Алексей: мне выдает ошибку, а я даже не знаю что с ней сделать
[22:56:49] Мулюкин Алексей: screenshot.su/show.php?img=1c60a4f4e05c2c9ee9ea6f8a161728ce.jpg
[22:57:35] Мулюкин Алексей: что мне прибудет, если я расскажу тайны вселенной XD
[22:58:04] Мулюкин Алексей: но скажу честно, такого гемороя и ада я еще не видел
[22:58:23] Мулюкин Алексей: даже doom metal показался фигней по сравнению с моими стонами когда я пытался все это запустить XD
[22:58:53] Мулюкин Алексей: эта жуткая боль....
[23:01:23] Мулюкин Алексей: на самом деле я чисто рендомно решил проблему
[23:01:35] Мулюкин Алексей: когда уже был полон отчаянья
[23:01:47] Мулюкин Алексей: и рыл все возможные форумы
[23:01:56] Мулюкин Алексей: уже был готов податься и задать вопрос
[23:02:19] Мулюкин Алексей: вообще самое противное что все темы с моей проблемой были без ответов T_T
А теперь вернемся на часов 5-6 назад

На первых парах

Ну а что, оптимист же я, да еще и энтузиаст, которые не ищет легких путей. Поэтому начинаю я с того что иду на офф сайт мускула и устанавливаю коннектор на C++. Пишу код с их мануала, обнаруживаю что часть классов пустые <_< Параллельно скачал буст. И тут начались первые танцы с бубном. Я долго пытался сообразить как же прописать референсы, чтобы классы были видны, делал все по инструкции из мануала. Но нифига не работало. В общем крутясь вокруг да около я так ничего и не сделал в течении часа.
Чуть дальше я нашел другой мануал на каком то левом сайте, в принципе это был добротный перевод офф мануала, но без скринов, но там были пару новых пунктов. А конкретно
  • установить пакет MySQL Server Dev + Debug Bin's
  • скопировать содержимое include и lib из коннектора в соответствующие папки с сервером
  • настроить референсы в студии на эти папки
  • юзать mysql.h
Ну на первых парах я даже написал много кода для тестирования)) Ибо там функции все те же самые что и в php. Компилирую, иииии. Да, не скомпилилось.

Ад продолжается

Вот он этот черт. Ну тут в принципе понятно, объявляем winsock.h и все, вроде бы. Кажется что все, но нет!!!!
Типичная ошибка линковки. Уххх, как же я ненавижу эту ошибку. Вроде все пути прописаны правильно, но в чем же проблема. Думал что
#pragma comment(lib, "libmysql.lib")
поможет. Но нет!!! Нет!!!
Я качаю различные версии и варианты и все равно ерунда!!!!

MySQL++

Начал искать альтернативы, сперва мне показалось что это какая то любительская подделка, сайт отпугнул, но потом когда увидел статью на IBM решил попробовать. Ну ок. Качаю, ии блин, ну почему нельзя сделать уже готовые билды???? Эххх, ну ладно начинаю компилить. Первая проблема это не найдет mysql_version.h. А ну ок, прописал референсы, заработало. Но вот дальше.... Начался такой сущий ****, что я даже не знал в какую сторону копать и даже не знал какой запрос сделать
пришлось возвращаться к своим старым проблемам
Гуглил код ошибки, яндексил сообщение ошибки, находил открытые темы с этой проблемой, хоть и под юникс некоторые были, но все заканчивалось одинаково. Они все были без ответов. Одну тему на хакере правда нашел с ответом, но он был ссылкой на коднет, которая была уже битая T_T

В полной жопе

Тыкал я всякие настройки, кидал я всякие файлы из одной папки в другую результат меня ждал один и тот же. И тут я решился на самый обсурдный шаг, я решил попробовать скачать коннектор для C. И знаете что? Он все равно не работал((( Ошибки все те же самые были. Но зато я хоть теперь знаю, что все файлы что в сервере идут, поставляются вместе с этим коннектором. И тут я было даже закрыл студию. И вдруг я заметил что качал то я х64, а собирал х32 T_T
Вы понимаете??? Я потратил, ну скажем так, часов 5-6 делая абсурдные вещи <_< И как думаете что я сделал дальше?

Решение

И так вот он момент истины, ребятки.
  1. Идем на мускул и качаем коннектор для C
  2. Распаковываем
  3. В своем проекте указываете референсы до папки include и папки lib
  4. Делаете зависимость в проекте от libmysql.lib
  5. Подключаете winsock.h и mysql.h
  6. Таскаете libmysql.dll с exe
  7. Ctrl+Alt+Shift+B (Rebuild All)
  8. ...
запускаем и получаем вот что
Ну и собственно исходник примера
#include "stdafx.h"
#include <WinSock.h>
#include <mysql.h>
#include <conio.h>
#pragma comment ( lib, "libmySQL.lib" )

int main(int argc, char *argv[])
{
	// Дескриптор соединения
	MYSQL *conn;
	// Получаем дескриптор соединения
	conn = mysql_init(NULL);
	if(conn == NULL)
	{
		// Если дескриптор не получен - выводим сообщение об ошибке
		fprintf(stderr, "Error: can't create MySQL-descriptor\n");
		return 1;
	}
	// Подключаемся к серверу
	if(!mysql_real_connect(conn, NULL,"testuser","password",NULL,NULL,NULL, 0))
	{
		// Если нет возможности установить соединение с сервером 
		// базы данных выводим сообщение об ошибке
		fprintf(stderr, 
		"Error: can't connect to database %s\n",
		mysql_error(conn));
	}
	else
	{
		// Если соединение успешно установлено выводим фразу - "Success!"
		fprintf(stdout, "Success!\n");
	} 
	mysql_close(conn);
	getch();
}
Всем спасибо и до свидания, на сегодня мой интеллектуальный ресурс исчерпан
Ну и как всегда ссылочки

Мануал по MySQL C API - на английском
MySQL Connector / C - качаем zip для х32
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
34
11 лет назад
2
По началу все сложно. Потом сможешь поднять сервер с закрытыми глазами, попутно заливая код без тестов.
0
25
11 лет назад
0
Я в 15 лет пытался в этом ковыряться, ахахах)
0
29
11 лет назад
Отредактирован alexprey
0
Hellcore, проблема лишь была в способе использования mysql в cpp. Сервер поднять не так уж и сложно, поднимал как на юниксе, так и на окнах, одинаково легко. Ну а функции вообще те же самые, что и в пыхе, так что все отлично теперь) Жаль правда, что mysqlpp не захотел скомпилиться(
1
29
11 лет назад
1
Это просто лол...
Типа союз отсоса для любителей пердолинга - MySQL и C++.
0
29
11 лет назад
0
Doc, ну C++ инструмент для выстрела в ногу XD
0
24
11 лет назад
0
Не занимайтесь извращениями юзайте nosql решения.
0
29
11 лет назад
0
Faion, к примеру?
Задача:
сервер на cpp + веб обвязка, типа ЛК
И что использовать тогда? использование единой sql базы хороший вариант на мой взгляд
1
29
11 лет назад
1
сервер на cpp
вы уволены.
0
29
11 лет назад
0
Doc, твоя прожорливая джавка не к месту для моей задачи
0
29
11 лет назад
Отредактирован Doc
0
Ахах, кк :D
Чеееерт, опять про кресты забыли!
Сервера линейки на жаве держат по 6к человек онлайн? Ужасная жава, ужасная! Не знаю ни одного сайта с сервером полностью на С (знаю, что гугл в критических частях на нем, при этом от с стараются избавиться и перейти на го)
Мб еще на паскале сервер напишешь?
0
24
11 лет назад
0
alexprey:
Faion, к примеру?
Задача:
сервер на cpp + веб обвязка, типа ЛК
И что использовать тогда? использование единой sql базы хороший вариант на мой взгляд
К примеру RavenDB. В отличие sql решений, nosql хранит объекты в бд, нету никакого оверхеда с созданием ДАЛ, и не нужно думать вообще о связях, ключах и прочей чертовщине. Я могу за день создать сколько угодно репозиториев для объектов любой сложности не напрягаясь, ибо практически делать ничего не нужно, кроме как выполнить действия к которым больше обязывает архитектура проекта. В том же мускуле ты бы делал подобную задачу пару недель.
Doc:
Сервера линейки на жаве держат по 6к человек онлайн? Ужасная жава, ужасная! Не знаю ни одного сайта с сервером полностью на С (знаю, что гугл в критических частях на нем, при этом от с стараются избавиться и перейти на го)
Мб еще на паскале сервер напишешь?
Это говнофришки на жабке, а офф сервера на спп :nate:
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.