Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для Dozentos
5 / 6 / 0
Регистрация: 26.10.2013
Сообщений: 118

Организация подключения к БД MySQL

22.06.2015, 15:07. Показов 3464. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создаю проект в VC++ 2010 Ultimate. Нужен пошаговый мануал по организации доступа к MySQL.
Пробовал сделать как рекомендовано здесь
написал в "шапке":
C++
1
2
3
4
5
6
7
8
#pragma comment(lib, "libmysql.lib")
#include <my_global.h>
#include <mysql.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <Windows.h>
#include <string.h>
создал фунции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
private: void mysql()
{
         MYSQL *mysql = mysql_init(NULL);
                 if(mysql)
                 {
                    printf("All is good!!! Abort…");
                    abort();
                 } else 
                 {
                    printf("Error initializing of MYSQL descriptor. Abort…");
                    abort();
                 }
}
и
C++
1
2
3
4
private: System::Void running_Click(System::Object^  sender, System::EventArgs^  e)
{
        mysql();
}
Экзешник создается, но при запуске на выполнение выдаёт:
Миниатюры
Организация подключения к БД MySQL  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.06.2015, 15:07
Ответы с готовыми решениями:

Ошибка подключения к Mysql
Пишу программу , где должно происходить подключение к мускулу и передача с Form2.cs в Form1.cs данных в стринги. бьёт ошибку подключения....

Ошибка подключения к MySQL
Добрый день, уважаемые коллеги :senor: Наверняка тема заезженная подключение JDBC MySQL. Выдает ошибку: ...

Ошибка подключения к mysql
Ставлю OpenCMS. На определенном шаге выбрасывает в окно Помогите, не знаю что делать?

45
 Аватар для Dozentos
5 / 6 / 0
Регистрация: 26.10.2013
Сообщений: 118
23.06.2015, 20:30  [ТС]
Студворк — интернет-сервис помощи студентам
Вот спасибо!!!
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
23.06.2015, 20:35
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Это уже видимо особенность самой БД. Тут нужны те, кто в MySQL хорошо разбирается.
сама БД не причем, апи прост. Тут что ТС не так делает. Опять же нужно убедится что БД в той кодировке что нужно, исключить СLI и попробовать без него.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9676 / 4827 / 764
Регистрация: 17.04.2012
Сообщений: 9,670
Записей в блоге: 14
23.06.2015, 20:47
Цитата Сообщение от Avazart Посмотреть сообщение
БД не причем
Цитата Сообщение от Avazart Посмотреть сообщение
нужно убедится что БД в той кодировке
Об этом и речь.
Цитата Сообщение от Avazart Посмотреть сообщение
исключить СLI
Сомневаюсь, что он тут при чём-то, метод mysql() .NETовские средства совсем не использует.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
23.06.2015, 20:50
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Сомневаюсь, что он тут при чём-то, метод mysql() .NETовские средства совсем не использует.
Выводятся данные в нетовские контролы? Какая там кодировка используется?
Как правильно преобразовать в String сhar* строки учитывая что в сhar* UTF8 ?
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9676 / 4827 / 764
Регистрация: 17.04.2012
Сообщений: 9,670
Записей в блоге: 14
23.06.2015, 20:55
Цитата Сообщение от Avazart Посмотреть сообщение
Выводятся данные в нетовские контролы?
Тьфу, на первый код смотрел. Тогда может подмешиваться как-то, но
Цитата Сообщение от Dozentos Посмотреть сообщение
mysql_character_set_name(&mysql) возвращает latin1..?
а кодировка в контролах - utf-8. Разве что глюк.
0
 Аватар для Dozentos
5 / 6 / 0
Регистрация: 26.10.2013
Сообщений: 118
24.06.2015, 08:30  [ТС]
Вот такую строку
7-bit ASCII → ISO-8859-5 + KOI8-R → CP866
выдал https://www.artlebedev.ru/tools/decoder/ если без всяких перекодировок в коде приложения. (правда в кириллицу символы так и не перевёл)
Может my.ini выложить?
0
 Аватар для Dozentos
5 / 6 / 0
Регистрация: 26.10.2013
Сообщений: 118
24.06.2015, 08:37  [ТС]
Вот переменные сервера mysql
Миниатюры
Организация подключения к БД MySQL  
0
 Аватар для Dozentos
5 / 6 / 0
Регистрация: 26.10.2013
Сообщений: 118
24.06.2015, 11:52  [ТС]
Переустановил MySQL. Теперь переменные сервера выглядят так
Миниатюры
Организация подключения к БД MySQL  
0
 Аватар для Dozentos
5 / 6 / 0
Регистрация: 26.10.2013
Сообщений: 118
24.06.2015, 11:56  [ТС]
Но вывод в приложении всё равно не в той кодировке... Кроме того, при попытке вставки в БД символов кириллицы выдаёт ошибку 1067 "Invalid value".
Если принудительно изменить кодировку mysql через SET NAMES cp1251, то значения в базу встанут, но в приложении выйдут кракозябры. А в UTF-8 вообще записывать отказывается...
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
24.06.2015, 14:29
Цитата Сообщение от Dozentos Посмотреть сообщение
На сервере default-character-set=utf8. Однако
C++
1
mysql_character_set_name(&mysql)
возвращает latin1..?
Ну так скажи ему явно, что на клиенте нужно utf8.
https://dev.mysql.com/doc/refm... r-set.html
0
 Аватар для Dozentos
5 / 6 / 0
Регистрация: 26.10.2013
Сообщений: 118
24.06.2015, 15:01  [ТС]
Проблему удалось решить выполнив на сервере SET NAMES cp866.
Не знаю как это решение покажет себя в дальнейшем (например, при вставке данных в таблицы), но пока работает.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.06.2015, 16:05
Цитата Сообщение от Dozentos Посмотреть сообщение
Проблему удалось решить выполнив на сервере SET NAMES cp866.
Не знаю как это решение покажет себя в дальнейшем (например, при вставке данных в таблицы), но пока работает.
Никак, это вообще не решение а грабли.
В БД оставте ваш UTF-8, а вот в приложении делайте перекодировку из UTF-8 в нужную.
Для консоли скорее всего проканает просто изменить кодовую страницу (с cp866 на юникодную 65001 кажется.)

C++
1
2
3
4
5
int main()
{
    SetConsoleOutputCP(65001);
    SetConsoleCP(65001);
// ...
Кроме того исходные файлы программы тоже должены быть в UTF-8.
0
 Аватар для Dozentos
5 / 6 / 0
Регистрация: 26.10.2013
Сообщений: 118
24.06.2015, 16:24  [ТС]
Avazart, вероятно я не совсем ясно объяснил ситуацию.
На сервере в БД не вносятся кириллические значения полей при кодировке utf-8!!! (Почему - это пока для меня секрет).
Т.е. по умолчанию (или если выполнить SET NAMES utf8) запрос
SQL
1
INSERT `table_name` (`field_name`) VALUES ('кириллица');
приводит к ошибке: ERROR 1067 (42000) Invalid value for `field_name`.
Глюк это или баг - мне не ведомо...
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.06.2015, 16:32
Ясен фиг если у тебя исходники в сp1251 как тогда 'кириллица' занесется туда где должно писаться UTF-8?
Преобразуей 'кириллица' в UTF-8 или исходники пересохрани в UTF-8 и все будет пучком.
0
 Аватар для Dozentos
5 / 6 / 0
Регистрация: 26.10.2013
Сообщений: 118
24.06.2015, 22:01  [ТС]
При чём тут исходники? Я команды SQL прям в консоли вводил, а не через приложение.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.06.2015, 22:46
Консоль какую кодировку имеет?

Вообще что за глупые вопросы.
0
 Аватар для Dozentos
5 / 6 / 0
Регистрация: 26.10.2013
Сообщений: 118
24.06.2015, 23:31  [ТС]
Учитывая, что консоль виндовая, надо полагать, что кодировку она имеет cp1251.
Пардон, если где-то тупанул с вопросом (честно говоря, не заметил).
В принципе, вопрос с подключением можно считать решённым (хотелось бы правда узнать о сокетах UNIX, подконектится к mysql крутящейся на FreeBSD мне не удалось).
С кодировкой - завтра проверю как будет обстоять со вставкой данных в БД через моё приложение. И если всё well, то тему можно будет закрывать.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.06.2015, 23:57
Цитата Сообщение от Dozentos Посмотреть сообщение
Учитывая, что консоль виндовая, надо полагать, что кодировку она имеет cp1251.
Вообщето обычно сp866.

Добавлено через 1 минуту
Цитата Сообщение от Dozentos Посмотреть сообщение
В принципе, вопрос с подключением можно считать решённым (хотелось бы правда узнать о сокетах UNIX, подконектится к mysql крутящейся на FreeBSD мне не удалось).
Разницы не должно быть, скорее проблема в чем то другом.
0
 Аватар для Dozentos
5 / 6 / 0
Регистрация: 26.10.2013
Сообщений: 118
26.06.2015, 15:05  [ТС]
Не удаётся вставлять данные в БД. Проблема в перекодировке из String^ в char[]
Пробую сделать как здесь, добавляю определение функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private: Void ToUTF8(char* pcOut, int nOutLen, String^ sIn)
{
    try
    {
  array^ bytes = System::Text::Encoding::Default->GetBytes(sIn);
  nOutLen = Math::Min(nOutLen - 1, bytes->Length);
  System::Runtime::InteropServices::Marshal::Copy(bytes, 0, IntPtr(pcOut), nOutLen);
  pcOut[nOutLen] = '\0';
    }
    catch (...)
    {
  pcOut[nOutLen] = '\0';
    }
}
Компилятор ругается на строчку
C++
1
array^ bytes = System::Text::Encoding::Default->GetBytes(sIn);
error C2955: cli::array: для использования класса шаблон требуется список аргументов шаблон
error C2440: инициализация: невозможно преобразовать "cli::array<Type,dimension> ^" в "cli::array ^"

Перепробовал другие способы, какие нашёл в сети - безрезультатно. Да и какие-то они все громоздкие...
Нет ли какой простой реализации? Ведь задача-то довольно обыденная.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
26.06.2015, 15:08
Есть библиотека iconv, есть MultiByteToWideChar() для преобразования кодировок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.06.2015, 15:08

Безопасность подключения MySQL
Собственно, вопрос в теме. Насколько безопасно собирать строку подключения в исполняемый файл? Читал, что можно использовать Rest API...

Ошибка подключения к MySQL
Доброго дня, пытаюсь подключиться к базе данных хостинга с локального компьютера. Все данные введены правильно, в качестве сервера...

Ошибка подключения к mysql
Здравствуйте! Подключаюсь к mysql с заведомо ложными данными $connect = mysql_connect($config, $config, $config); далее идет проверка...

Ошибка подключения к MySQL
Здравствуйте, работал я как обычно со своей базой, все норм, все подключалось. А спустя день уже не подключается и выдает такое: Access...

Ошибка подключения к MySQL
Добрый день, решил переписать свой дипломный проект с делфей на C#. Просто для того чтоб научиться на нём работать. Но не получается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru