Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Подключение к MySQL

7.8K
16 июня 2007 года
simplemortal
62 / / 09.02.2007
Привет всем!
Кому-нибудь приходилось подключаться к MySQL из Windows Forms?

У меня что-то не получается.
 
Код:
#include "mysql.h"
............
MYSQL* mysql;
mysql=mysql_init(NULL); //должна быть ещё такая строка я её добавил при редактировании этого сообщения (что писать вместо NULL?)
if(!mysql_real_connect(mysql,"localhost","root","","",3306,"",0))
{
............   
}


На Visual C++ работает, а на Windows Forms компилятор пропускает, но при попытке подключения (mysql_real_connect) работа программы прерывается.

И ещё, я не совсем понял, символ ^ это вместо звёздочки, для объявления указателей?
Если да, для чего тогда в Windows Forms звёздочка? Она вообще используется? Компилятор её пропускает.

Пробовал заменять * на ^ в вышеприведённом коде, тогда компилятор пишет:"error C3699: '^' : cannot use this indirection on type 'MYSQL'".
В Windows Forms есть что-то типа NULL, а то оно у меня не катит?

По нету покопался ничего не нашёл по поводу подключения к MySQL из Windows Forms.
7.8K
16 июня 2007 года
simplemortal
62 / / 09.02.2007
Если сделать так:
 
Код:
MYSQL mysql;
     mysql_init(&mysql);
     mysql_real_connect(&mysql,"localhost","root","","",3306,"",0);
     mysql_select_db(&mysql,"PsychoTestDataBase");
 mysql_close(&mysql);
,
то программа к базе подключается, но сразу после подключения появляется окно, в котором написано, что в этой программе обнаружена ошибка, приносим извинения и пр. с кнопками отправить и неотправить отчёт в Майкрософт.:confused:
Это происходит из-за того, в строке
 
Код:
mysql_init(&mysql);
должно быть что-то вроде
 
Код:
mysql=mysql_init(0)
, mysql должна быть указателем.
Подскажите, как объявить указатель на mysql?
Если так
 
Код:
MYSQL* mysql;
, то компилятор пропускает, но при попытке подключения программа прерывается.
Если так
 
Код:
MYSQL^ mysql;
, то компилятор выдаёт ошибку:"error C3699: '^' : cannot use this indirection on type 'MYSQL".:confused: :( :confused:
7.8K
16 июня 2007 года
simplemortal
62 / / 09.02.2007
Всё оказалось просто!
Нужно было просто написать так:
 
Код:
MYSQL *mysql=new MYSQL;


Но всё-таки ответьте, пожалуйста, чем * отличается от ^???
И как использовать пустое значение, которое обычно бывает NULL, но NULL здесь не работает???
713
16 июня 2007 года
Ap0k
360 / / 13.03.2006
Если топик создан в правильном разделе..
Может тогда не мучиться и воспользоваться MySQL® Connector/Net? :confused:
Теперь ответ на вопрос, если он был все таки поднят:
^ (Declares a handle to an object on the managed heap) - это Managed указатель, для него предусмотрены ключевые слова [COLOR=blue]gcnew[/COLOR][COLOR=black]/[/COLOR][COLOR=blue]nullptr[/COLOR] (читать тут)
* (regular C++ pointer) - это Unmanaged указатель, для него предусмотрено ключевое слово [COLOR=blue]new[/COLOR]
7.8K
17 июня 2007 года
simplemortal
62 / / 09.02.2007
Цитата:
Может тогда не мучиться и воспользоваться MySQL® Connector/Net?


Я с подключением и работой с MySQL разобрался, поэтому буду работать через его родные функции, там всё достаточно просто.

И теперь стало понятно для чего применяется ^.
Спасибо!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог