Прога состоит из двух форм. На первой размещены все компоненты и непосредственно вся работа в ней проводится, вторая - чисто настройки для подключения к базе (сервер, база, пользователь, пароль - 4 едита и батон).
Настройки упорно подставляют рута с пустым паролем, вместо текста, забиваемого в соответствующие едиты(на забиваемые в едиты хост и название базы компоненты вроде реагируют адекватно), не пойму в чем дело... наверное неправильно работаю с их записью в компоненты SimpleDataSet и SQLConnection.
Знаю, можно через LoginPromt := true работать с пользователем и паролем, но не хочу так, хочу именно "вручную"
Форма1(MainForm):
Код:
...
procedure TMainForm.FormShow(Sender: TObject);
begin
SettingsForm.ShowModal();
end;
...
Форма2(SettingsForm):
Код:
...
procedure TSettingsForm.ConnectBtnClick(Sender: TObject);
begin
MainForm.SimpleDataSet1.Active := false;
MainForm.SQLConnection1.Connected := false;
MainForm.SimpleDataSet1.Connection.Params.Clear;
MainForm.SQLConnection1.Params.Clear;
MainForm.SQLConnection1.Params.Add('DriverName=MySQL');
MainForm.SimpleDataSet1.Connection.Params.Add('DriverName=MySQL'); MainForm.SQLConnection1.Params.Add('HostName='+SettingsForm.ServerEdit.Text); MainForm.SimpleDataSet1.Connection.Params.Add('HostName='+SettingsForm.ServerEdit.Text); MainForm.SQLConnection1.Params.Add('DataBase='+SettingsForm.BaseEdit.Text); MainForm.SimpleDataSet1.Connection.Params.Add('DataBase='+SettingsForm.BaseEdit.Text); MainForm.SQLConnection1.Params.Add('User_Name='+SettingsForm.UserEdit.Text); MainForm.SimpleDataSet1.Connection.Params.Add('User_Name='+SettingsForm.UserEdit.Text);
MainForm.SQLConnection1.Params.Add('Password='+PassEdit.Text);
MainForm.SimpleDataSet1.Connection.Params.Add('Password='+SettingsForm.PassEdit.Text);
MainForm.SQLConnection1.Params.Add('BlobSize=-1');
MainForm.SimpleDataSet1.Connection.Params.Add('BlobSize=-1');
MainForm.SQLConnection1.Params.Add('ErrorResourceFile=');
MainForm.SimpleDataSet1.Connection.Params.Add('ErrorResourceFile=');
MainForm.SQLConnection1.Params.Add('LocaleCode=1251');
MainForm.SimpleDataSet1.Connection.Params.Add('LocaleCode=1251');
MainForm.SimpleDataSet1.Active := true;
MainForm.SQLConnection1.Connected := true;
SettingsForm.Close();
end;
...
На сколько я понял, параметры, заданные SimpleDataSet'у автоматически присваиваются SQLConnection'у, т.к. они "повязаны"
, однако, т.к. ничего не работает у меня, то в коде всеравно дублирую, как видите изменение параметров в последний компонент тоже.
Вот еще имеется вторая проблема такая:
на главной форме есть едит и кнопка, для осуществления простого, примитивнейшего поиска по таблице базы. Но вот незадача, Мускул не понимает кириллицу, вводимую в этот едит, т.е. выдает ошибку:
Код:
Project Project1.exe raised exception class EDatabaseError with message 'Uncnown Column "тут юникодная абракадабра"' in 'where clause". Process stoped. Use Step or Run to continue.
База в кодировке cp1251, пишу на Borland Delphi 7.
Листинг:
Код:
...
procedure TMainForm.SearchBtnClick(Sender: TObject);
begin
SimpleDataSet1.Active := false;
SimpleDataSet1.DataSet.CommandText := 'SELECT * FROM tblname WHERE column1 LIKE '+SearchEdit.Text+' or column2 LIKE '+SearchEdit.Text+' or...';
SimpleDataSet1.Active := true;
end;
...
Прошу подсобить чем-нить более опытных товарищей!