Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.09.29;
Скачать: [xml.tar.bz2];

Вниз

MySQLConnection ошибка Access Violation...   Найти похожие ветки 

 
McLotos   (2013-01-12 00:07) [0]

Помогите разобраться, чего я тут такого не того намудрил
Есть форма, в которую забиваются данные для подключения к MySQL серверу, при клике по кнопке срабатывает процедура

procedure TForm1.bConnectClick(Sender: TObject);
 var
   Server,Login,Passw: PAnsiChar;

 begin
   Server := PAnsiChar(eServer.Text);
   Login := PAnsiChar(eLogin.Text);
   Passw := PAnsiChar(ePassw.Text);

 SQLConnector.SQLConnection.Connect(Server,Login,Passw);
 SQLConnector.Connected := true;
end;

end.

Вот что здесь не так, почему этот код не работает? Ругается на строку
SQLConnector.SQLConnection.Connect(Server,Login,Passw);
я пробовал даже так
SQLConnector.SQLConnection.Connect(eServer.Text:PAnsiChar;eLogin.Text:PAnsiChar; ePassw.Text:PAnsiChar);

такой вариант компилятор не пропускает. что делать?


 
Германн ©   (2013-01-12 01:28) [1]


>
> McLotos   (12.01.13 00:07)
>
> Помогите разобраться, чего я тут такого не того намудрил

Тут ничего. Где-то в другом месте чего-то не было сделано вовремя. Одно могу сказать точно. Причина AV никак не связана с параметрами процедуры Connect. И скорее всего она связана либо с SQLConnector, либо с SQLConnection. И поскольку я не знаю что такое SQLConnector, то мне больше нечего сказать.


 
AlexDn ©   (2013-01-12 02:49) [2]

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


 
KilkennyCat ©   (2013-01-12 04:08) [3]

а что-то типа коннекшион нэйм или тип разве не надо указывать? да и версии клиента и сервера могут быть несовместимыми (я бы с этого начал проверку).


 
McLotos   (2013-01-12 10:01) [4]

Германн, но программа же матерится именно на этот участок, хотя как вариант могу проверить правильность передаваемых переменных, но не думаю что это чо-то даст.
SQLConnector ни что иное как SQLConnector:TSQLConnection закладки dbExpress

AlexDn я тоже использую только стандартные компоненты.

KilkennyCat а что, это мысль, где-то на просторах Интернет я наткнулся как-то на мысль, что Delphi работает не со всеми версиями MySQL, тогда возникает вопрос, как заставить её работать именно с этой версией, или может проще найти ту с которой она сможет работать.


 
DVM ©   (2013-01-12 11:31) [5]


> McLotos   (12.01.13 10:01) [4]


> dbExpress

FConn := TSQLConnection.Create(nil);
with FConn do
  begin
    ConnectionName := "MySQLConnection";
    DriverName := "MySQL";
    GetDriverFunc := "getSQLDriverMYSQL";
    LibraryName := "Dbxmys.dll";
    LoginPrompt := False;
    VendorLib := "libmysql.dll";
    Params.Clear;
    Params.Add("DriverName=MySQL");
    Params.Add("HostName=" + Settings.DBHost);
    Params.Add("Database=" + Settings.DBName);
    Params.Add("User_Name=" + Settings.DBUser);
    Params.Add("Password=" + Settings.DBPassword);
    Params.Add("BlobSize=-1");
    Params.Add("ServerCharSet=utf8");
  end;

именно так и никак иначе.

и все указанные библиотеки должны лежать в каталоге программы и версия клиентской библиотеки mysql должна быть не ниже а лучше такой же как версия сервера.


 
DVM ©   (2013-01-12 11:33) [6]


> McLotos

если TSQLConnection создается не runtime, то соответственно все эти параметры в свойствах компонента указать надо.


 
McLotos   (2013-01-12 12:30) [7]

В общем переделал код, это вызвало другую ошибку, что уже радует.
dbExpress Error:Invalid Precision

[off]наличие сигнала об ошибке лучше чем его отсутствие =)[/off]

немного об именовании переменных
ePass,eHost и т.д. это edit
lPass,lHost и т.д. это label


procedure TForm1.bConnectClick(Sender: TObject);
  var
     SQLConnector:TSQLConnection;
 begin
     SQLConnector:= TSQLConnection.Create(nil);
     SQLConnector.DriverName := "dbxmysql";
     SQLConnector.GetDriverFunc := "getSQLDriverMYSQL50";
     SQLConnector.LibraryName := "dbxopenmysql50.dll";
     SQLConnector.VendorLib := "libmysql.dll";
     SQLConnector.Params.Append("Database=" + eBase.Text);
     SQLConnector.Params.Append("User_Name=" + eUser.Text);
     SQLConnector.Params.Append("Password=" + ePass.Text);
     SQLConnector.Params.Append("HostName=" + eHost.Text);

     SQLConnector.Open;
 end;
end;


 
McLotos   (2013-01-12 12:32) [8]

DVM =)
когда писал пост не видел Ваши ответы, почти дублирование получилось =)


 
DVM ©   (2013-01-12 14:22) [9]


> McLotos   (12.01.13 12:30) [7]

по поводу старых версий DbExpress ничего сказать не могу, он сильно эволюционировал со времен D7, даже параметры изменились.

Указанные в параметрах подключения библиотеки все доступны программе?

Тут еще принципиальный момент, если не ошибаюсь:


>  Params.Clear;


 
McLotos ©   (2013-01-12 14:57) [10]

библиотеки все доступны, лежат рядом с проектом.


 
Anatoly Podgoretsky ©   (2013-01-12 15:16) [11]


> Я достаточно долго долбался с удалённым подключением

Обычная проблема для dbexpress и MySql


 
DVM ©   (2013-01-12 15:20) [12]


> Anatoly Podgoretsky ©   (12.01.13 15:16) [11]


> Обычная проблема для dbexpress и MySql

Новые версии (xe и новее) без проблем подключаются, чаще проблема не в самом dbExpress а в несовпадении версий клиентской библиотеки и сервера, а также в разрешениях на самом сервере для удаленных подключений.


 
DVM ©   (2013-01-12 15:20) [13]


> Anatoly Podgoretsky ©   (12.01.13 15:16) [11]


> Обычная проблема для dbexpress и MySql

Новые версии (xe и новее) без проблем подключаются, чаще проблема не в самом dbExpress а в несовпадении версий клиентской библиотеки и сервера, а также в разрешениях на самом сервере для удаленных подключений.


 
McLotos ©   (2013-01-12 15:35) [14]

ок. практически всё понятно, непонятно только одно, как это решить.
Сначала нашёл что delphi7 не умеет работать с MySQL старше 3 версии, подружил их при помощи библиотеки, теперь выскакивает эта странная ошибка, о которой в Интернет информации никакой.
Что посоветуете?


 
McLotos ©   (2013-01-12 15:39) [15]

а где модератор?
плииииз можно дописать в название темы описание второй появившейся ошибки? dbExpress Error:Invalid Precision


 
DVM ©   (2013-01-12 15:54) [16]


> McLotos ©   (12.01.13 15:35) [14]


> ок. практически всё понятно, непонятно только одно, как
> это решить.

попробуй Zeos http://sourceforge.net/projects/zeoslib/files/?source=navbar


 
McLotos ©   (2013-01-13 22:27) [17]

Zeos так и не получилось нормально поставить, вроде делал все по инструкции. а все-равно вкладка не появлялась.
В общем сделал через ADO, думаю это не худший вариант, и код получился всего в 3 строчки =)
procedure TForm1.btn1Click(Sender: TObject);
begin
 try
  with qry1 do
   begin
     SQL.Clear;
     SQL.Add("SELECT * FROM access");
     Active:=True;
     ShowMessage(IntToStr(RecordCount));
   end;
  except
    on e:Exception do
  end;
end;


только вот теперь не могу понять как сделать чтобы данные для подключения запрашивались из формы, как в первоначальном варианте.


 
DVM ©   (2013-01-13 22:55) [18]


> McLotos ©   (13.01.13 22:27) [17]


> Zeos так и не получилось нормально поставить, вроде делал
> все по инструкции. а все-равно вкладка не появлялась.

да вроде нормально там ставится, вероятно где то ошибся все же.


> В общем сделал через ADO


> только вот теперь не могу понять как сделать чтобы данные
> для подключения запрашивались из формы

В адо параметры подключения, в.т.ч логин пароль в строке подключения обычно фигурируют, туда и подставляй.


 
McLotos ©   (2013-01-13 23:26) [19]


> туда и подставляй.

в строку? как? Мне нужно чтобы они вводились в форму при старте программы. Т.е. сама программа не запустится пока не подключится к БД, а чтобы она подключилась нужно в форму указать адрес сервера, имя БД, логин и пароль юзверя БД


 
McLotos ©   (2013-01-13 23:34) [20]

кажись дошло

   qry1.ConnectionString(
Provider=MSDASQL.1;
Persist Security Info=False;
Extended Properties="Driver=MySQL ODBC 5.2w Driver;
SERVER="+eServer.Text+";
UID="+eUser.Text+";
DATABASE="+eBase.Text+";
PORT="+ePort.Text+"");

как-то так?


 
DVM ©   (2013-01-13 23:38) [21]


> McLotos ©   (13.01.13 23:26) [19]
>
> > туда и подставляй.
>
> в строку? как?

Да примерно так же как у тебя там выше было:


var
 Query: TADODataSet;
begin
 Query := TADODataSet.Create(nil);
 try
   Query.ConnectionString := ConnectionString;
   Query.CommandText := SQL;
   Query.Active := True;
   .....
 finally
   Query.Free;
 end;
end;


вид строки подключения для MySQL можно в интернет посмотреть, соответственно вместо TADODataSet можно взять TAdoConnection.


 
DVM ©   (2013-01-13 23:39) [22]


> McLotos ©   (13.01.13 23:34) [20]


> как-то так?

да


 
McLotos ©   (2013-01-13 23:46) [23]

буду возиться, посмотрим что получится. спасибо.


 
Плохиш ©   (2013-01-14 01:21) [24]


> McLotos ©   (13.01.13 23:26) [19]
>
> > туда и подставляй.
>
> в строку? как? Мне нужно чтобы они вводились в форму при
> старте программы.

У TADOConnection имеется свойство Properties.
"Extended Properties" певдставляет собой строку разделённых пар "имя=значение".



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.09.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.003 c
15-1363017588
DevilDevil
2013-03-11 19:59
2013.09.29
Проект "CachedBuffers"


2-1357842704
Den
2013-01-10 22:31
2013.09.29
XmlDomDocument в какой строке кода не хватает атрибута.


2-1358163221
McLotos
2013-01-14 15:33
2013.09.29
Аргументы имеют неверный тип, выходят за пределы допустимого...


2-1358138194
yaproq
2013-01-14 08:36
2013.09.29
Помогите ускорить скорость перемещения "курсора".


8-1233162496
Agent[007]
2009-01-28 20:08
2013.09.29
Работа с Mesh, DirectX





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский