Работа с MySQL через c++
Весь день сижу перед монитором, пытаюсь подключиться к MySQL через c++. Файлы заголовков MySQL дистрибутива скопировал в проект, подключил (ошибок не выдаёт по этому поводу).
Воспользовался чьим-то кодом (на каком-то форуме человек нашёл решение и код якобы рабочий). Собственно я хочу всего-лишь вывести построчно логины аккаунтов с гмлвл > 0. Во многих (опробованных мною) простейших реализациях подключения c++ к MySQL вылетает очень противная ошибка: Я использую: Microsoft Windows XP Professional SP3 Microsoft Visual Studio 2008 Professional Edition (rus). MySQL 5.1.39-community Собственно, код: Код:
#include <stdafx.h> Если у кого-то имеется рабочий пример - очень прошу поделиться. P.s. Выкладывали когда-то давно программку RUDB, она подключалась к БД и заполняла таблицы locales_*. Если у кого имеется код - буду рад покопаться в нём. Спасибо. |
|
Цитата:
Кажется он называется libmysql.lib. |
Да простят меня за некропостинг, но мой вопрос не настолько велик чтобы выделять для него целую тему :)
Начал изучать работу MySQL с C++. Работаю в VS2008, использую Windows Forms Application. на форме есть некий textBox1 и button1. При нажатии на баттон запускается SQL запрос в БД, что-то типо:
Но т.к. в mysql_query 2-ой параметр должен быть в const char *q, то ничего не компилируется. Подскажите как textBox1->Text превратить в const char * для того чтоб вставить в запрос? |
Делал так:
Код:
using namespace System::Runtime::InteropServices; Код:
1>c:\documents and settings\nordway\мои документы\visual studio 2008\projects\mysql\mysql\Form1.h(145) : error C2679: binary '+' : no operator found which takes a right-hand operand of type 'const char *' (or there is no acceptable conversion) P.S. Объедините в 1 пост, какой-то глюк с форумом был. |
1. Это не чистый C++, по-другому со строкам работать надо.
2. В C++ конкатенация строк делается через strcat или так: std::string a; a + "asdasd"; 3. System::String^ можно складывать, а заданные кавычками строки, которые автоматически делаются const char*, можно инициировать через S префикс: S"asdasd" |
У меня есть вопрос. Сделал подключение к MySQL на C#. Вот сделал я запрос, извлек его, описал структуру БД. А как перебирать темплейты, ибо ума хватило только запихнуть в цикл все, и извлекать запросы где ентри увеличивается на 1 за цикл. Сами понимаете это ужасно медленно. Работать конечно можно, но когда надо перебрать 40к запросов, то придется на день комп оставлять, на столько все медленно.
|
Надо выгрузить результат запроса в коллекцию и не париться
|
Крашит программу из-за такой причины: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Использую MySQL connector 6.3.5. Погуглил и выяснил, что такая проблема из-за того, что запрос не успевает пройти(у меня это селект большой таблици). Там советуют установить connection timeout побольше. Повышал его с 30 до 150 000.Повышал постепенно, но каждый раз программа крашилась. В консоли запрос проходит очень быстро. Вот конфиг подключения, если нужен const string connectionInfo = Код:
("host=127.0.0.1;port='3306';database='mangos';UserName='root';Password='root';Connection Timeout='150000';"); |
делал полный селект из таблиц го и кричеров, никаких проблем не было...
|
Крашит только при таком селекте
Код:
SELECT * FROM mangos.gameobject_template WHERE entry IN(SELECT entry FROM mangos.gameobject_template1) |
для таких целей делают соединения таблиц, а это извращение...
|
Код:
SELECT t1.*, t2.* FROM gameobject_template t1, gameobject_template1 t2 WHERE t1.entry = t2.entry LIMIT 1 Большое спасибо, запрос прошел за пару секунд. Больше не крашит! |
Столкнулся с проблемой, при компиляции проекта "клона mangos", выводит LINK : fatal error LNK1104: не удается открыть файл "libmysql.lib", не могу найти где прописывается путь к данному файлу или где он может быть подключен. Работаю в MVS2010.
Все нашел проблему... Нужно было добавить недостающие библиотеки в Program Files\Microsoft Visual Studio 10.0\VC\lib |
Нужно было добавить путь к либам mysql в свойствах проекта
|
Я в данный момент использую эти библиотеки! Тут нечего сложного нет! Компилирую в vc++2010...
|
подключаю mysql.h
Код:
#include "include/mysql/mysql.h" Код:
typedef struct st_net { |
На сколько я помню класса my_socket там нет... Могу ошибаться. Где вы вообще взяли такой пример? Можно больше кода?
Вроде при создания соединения, mysql сам создает сокет... В Qt все проще... |
Цитата:
Код:
namespace _mysql{ |
Лучше кидайте свой билдер и юзайте визуал студио...
|
Цитата:
|
Цитата:
А вообще можете почитать учебник http://ru-mangos.ru/showthread.php?t=6092 ... Он для новичка вроде вас, там найдете все что вам нужно. |
Цитата:
Вот только что то немогу понять, возможно ли сделать нечто подобное? Код:
TFileStream* fs = new TFileStream("имя_архива_на диске.zip", fmCreate|fmOpenWrite); // |
Цитата:
|
А чем не устраивает URLDownloadToFile? Зачем использовать всякие левые библиотеки для таких простых вещей?
|
Цитата:
Код:
#include <urlmon.h> но вот только 1 минус, прогресс загрузки невиден. Можно это хоть как то вывести? Почитал документацию. но что то с IBindStatusCallback разобраться немогу. Качаю так: Код:
URLDownloadToFile( 0, L"отсюда", L"сюда", 0, 0); |
Цитата:
Все хорошо пока не окажется, что необходимо использовать прокси(необязательно который прописан в системе), проверять время последней модификации файла, отправлять пост(гет) запросы или проходить авторизацию. |
Цитата:
|
|
На C# вообще задачу, поставленную в этом топике было бы проще решить...
|
Цитата:
|
Цитата:
Найденый код в тырнете: Код:
#include <iostream> |
Цитата:
Код:
void my_function () |
Цитата:
зы какой яп изучали до с++? |
Цитата:
Код:
void my_function (int argc, char* argv[]) |
Код:
void my_function (char* from, char* to) |
Цитата:
main.php Код:
#include "function.h" Код:
void my_function (char* from, char* to) |
Создаю пустой проект (VSE 2012).
Копирую в проект папку mysql из исходников мангоса dep\include\mysql копирую папку lib из dep\lib создаю cpp Код:
#include "mysql/my_global.h" Код:
1 error C1083: Cannot open include file: 'config-win.h': No such file or directory c:\\consoleapplication1\consoleapplication1\mysql\my_global.h 76 1 ConsoleApplication1 |
Либы вы в свойства проекта добавили? Пути к библиотекам указали? Вы сразу почитайте как соединять mysql++ к vc++, а потом задавайте вопросы...Тем более в ошибках всегда кроется ответ.
Для начала разберитесь с этой строкой: Код:
error C1083: Cannot open include file: 'config-win.h'... P.S. Хотя вы напоминаете мне себя, так же глупил. |
Текущее время: 07:45. Часовой пояс GMT +3. |
ru-mangos.ru - Русское сообщество MaNGOS