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

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

22.06.2015, 15:07. Показов 3250. Ответов 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
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 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
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 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
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
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
Ответ Создать тему
Новые блоги и статьи
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru