Форум: "Начинающим";
Текущий архив: 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.51 MB
Время: 0.003 c