Показать сообщение отдельно
  #1  
Старый 16.12.2009, 01:57
"Hatchet" Harry "Hatchet" Harry вне форума
Прохожий
 
Регистрация: 22.03.2009
Сообщения: 30
Репутация: 10
По умолчанию MySQL4 (DataSource+SQLConnection+SimpleDataSet+DBGrid) проблемы

Прога состоит из двух форм. На первой размещены все компоненты и непосредственно вся работа в ней проводится, вторая - чисто настройки для подключения к базе (сервер, база, пользователь, пароль - 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;
...  

Прошу подсобить чем-нить более опытных товарищей!
Ответить с цитированием