Перейти к содержанию
Fire Monkey от А до Я
  • 0

Помогите c SQL запросом


vitalik8311

Вопрос

Добрый день! Тут думаю, над SQL запросом, запрос должен выглядеть так:

FDQuery1.SQL.Text:='Select * FROM user'+' WHERE login,password =' +Login+','+Password?


или так

DQuery1.SQL.Text:='Select * FROM user'+' WHERE login='+Login,password ='+Password; 

Чтобы проверить соответствует логин и пароль

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Спасибо тут раньше пользовался: 

Locate(FieldsCombo.Text, SearchEd.Text, [loPartialKey, loCaseInsensitive]);

Было удобно, но тут задумался что лучше, запросы или Locate.
дело в том что Locate возвращает ответ в случае удачи

Изменено пользователем vitalik8311
Ссылка на комментарий
  • 1

все очень просто.
представьте что у вас 100500 тысяч пользователей, и давайте всех их скачаем на компьютер, а тут поищем среди них через Locate()

сама по себе плохая мысль.

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

Ссылка на комментарий
  • 0

еще хороший тон прилагать хотя бы краткую инструкцию - что надо переименовать, куда поместить путь к базе, и что нажать, чтобы запустить программу

и потом что нажать, чтобы получить ошибку.

еще раз обращаю внимание, что для того, чтобы вам помогали, нужно как-то позаботиться о том, кто должен почему-то разбираться в вашем коде. Он не отформатирован даже. Есть волшебство Ctrl+D или Ctrl+W в cnWizard, которые это даже делают автоматически за вас.

я двумя постами выше написал, как должен выглядеть запрос. У вас совершенно не такой. Если вы хотите делать по-своему, делайте, но я тогда при чем тут?

самое главное. Даже неправильный запрос нужно открыть!

FDQuery4.SQL.Clear;
FDQuery4.SQL.Add('SELECT * FROM usersbase');
FDQuery4.SQL.Add('WHERE Login='+Login);
 Password1:=FDQuery1.FieldByName('Password').AsString;
 Group1:=FDQuery1.FieldByName('Group').AsString;
 Other1:=FDQuery1.FieldByName('Other').AsString;

где тут открытие ? в какой момент программа должна обратиться к серверу?

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

я не стал разбираться в хитростях остальной вашей логики, там сомнительное использование непонятно где объявленных внешних переменных и какие-то неизвестные науке операции с числами и строками из базы.

еще совершенно неясно, почему запрос идет в FDQuery4, а поля вы запрашиваете в FDQuery1 ???

главная идея - вам юзер ввел логин и пароль. вы запросили сервер, есть ли юзер с таким логином и паролем.

сервер либо нашел его, либо нет. если нет, то все переменные неплохо бы сбросить в пусто.

сам запрос помещен в компонент в дизайн-тайме, не нужно его каждый раз писать заново

итого

function TForm4.verifikation(Login, Password: string): string;
begin
  result := '';
  Group1 := '';
  Other1 := '';

  FDQuery4.Close();
  FDQuery4.ParamByName('login').AsString := login;
  FDQuery4.ParamByName('password').AsString := password;
  FDQuery4.Open();

  if FDQuery4.RecordCount = 0 then
    exit;

  I := 4;
  Password1 := Password;
  Group1 := FDQuery4.FieldByName('Group').AsString;
  Other1 := FDQuery4.FieldByName('Other').AsString;
  if Group1 <> 'Admin' then
    I := I - 1
  else
    Result := '"' + inttostr(I) + '"' + Other1 + '"';
  if Group1 <> 'moder' then
    I := I - 1
  else
    Result := '"' + inttostr(I) + '"' + Other1 + '"';
end;

 

QIP Shot - Screen 059.png

Изменено пользователем krapotkin
Ссылка на комментарий
  • 0

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

просто привел пример верного запроса к базе

Ссылка на комментарий
  • 0
FDQuery4.ParamByName('login').AsString := login;
  FDQuery4.ParamByName('password').AsString := password;
Вспомогательные переменные:
login1, password1,Group1, Other1,
нужны на этапе трассировки программы чтобы увидеть какую строку выделил запрос строку

login,password,Other - чтобы выделить из запроса присланного клиентом нужные данные далее после проверки(если она прошла успешно)

 Group,Other  - заполняться из базы возвращаться клиенту. 

password,Other- может заполнить и изменить пользователь в любое время(функция в разработке) 

FDQuery1-видеть всю таблицу
FDQuery4 - для запроса

Немного о том почему  мне удобнее проверять наличие логина:

 Дело в том что при регистрации нужно проверить есть логин можно ли его зарегистрировать или нет если такого логина нет можно зарегить если  логин соответствует начинается проверка пароля иначе нет смысла проводить проверку пароля и  и обратно отсылается результат если пароль соответствует начинается проверка группы пользователя

Изменено пользователем vitalik8311
Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...