TMySQL51Connection.open = error SIGSEGV

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

TMySQL51Connection.open = error SIGSEGV

Сообщение Александр_Тверь » 16.11.2012 14:40:00

Добрый день, господа!

По служебной необходимость понадобилось написать сервис, который бы коннектился к MySQL и выполнял некоторые запросы.

C FreePascal знаком, но совсем поверхностно.
Сейчас пытаюсь подключиться к MySQL и выполнить простенький запрос.

Для того, чтобы разобраться (попробовать) в подходах, накидал немного кода, который не работает :)
Соответственно прошу Вашей помощи. Буду благодарен за ссылку на нужный раздел справки, общие рекомендации или конкретное решение данной проблемы.

Какие ограничения:
1. Подключаться хочется из консоли т.е. без использования форм.
2. Работать будет под виндой (хотя использовать win32 специфичные варианты не хотелось бы).
3. MySQL 5.1

В качестве IDE использую Lazarus 1.02

Проблемы:
1. Что-то не понял, как строковый Port (читается из ini файла) преобразовать в нужный для TMySQL51Connection тип.
2. При MySQLConn.open возникает ошибка SIGSEGV, возможно это как-то связано с тем, что я при создании не указываю объект (TMySQL51Connection.Create(nil))?
3. Возможно есть какой-то другой "true way" (с учетом указанных выше ограничений)?

Ниже приведен листинг модуля (на CurSet можно забить, класс читает настройки из ini):

program ECUKM4;

{$mode objfpc}{$H+}

uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, SettingsUnit,mysql51conn, sqldb;


var
CurSet : Settings;
Server, DatabaseName, UserName, Password, Port :String;
MySQLConn : TMySQL51Connection;
MySQLQuery : TSQLQuery;

begin

CurSet := Settings.Create;

Server := CurSet.ReadValue('General','Server');
Port := CurSet.ReadValue('General','Port');
DatabaseName := CurSet.ReadValue('General','DatabaseName');
UserName := CurSet.ReadValue('General','UserName');
Password := CurSet.ReadValue('General','Password');

CurSet.Free;

MySQLConn := TMySQL51Connection.Create(nil);

MySQLConn.HostName := Server;
MySQLConn.Port := 3306;
MySQLConn.UserName := UserName;
MySQLConn.Password := Password;
MySQLConn.DatabaseName := DatabaseName;
MySQLConn.CharSet := 'utf8';
MySQLConn.open; // ТУТ ВОЗНИКАЕТ ОШИБКА

MySQLConn.Free;
Александр_Тверь
незнакомец
 
Сообщения: 1
Зарегистрирован: 16.11.2012 14:21:29

Re: TMySQL51Connection.open = error SIGSEGV

Сообщение yeger » 11.12.2012 10:44:23

Пример не моделировал, извините, но:
- Нет объекта SQLTransaction. Это важно.
- я делаю подключение через
Код: Выделить всё
MySQLConn.Connected := true;

может и не существенно, но все таки.
Аватара пользователя
yeger
новенький
 
Сообщения: 49
Зарегистрирован: 17.03.2011 12:26:34


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru