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;
По служебной необходимость понадобилось написать сервис, который бы коннектился к 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;