Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Синтаксис Paradox 7


Автор: Mpak 22.1.2007, 19:06
Код

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 ExtractFilePath(Application->ExeName)+"users.db";
}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 QT->Close();
 QT->SQL->Clear();
 QT->SQL->Add("INSERT INTO users (users, Name, Passw) VALUES (0, '"+user->Text+"', '"+passw->Text+"')");
 QT->ExecSQL();
 QT->Close();
 QT->SQL->Clear();
 QT->Open();
 QT->SQL->Add("select count(*) from users");
 for (int i=1;i<=QT->FieldByName("count")->AsInteger;i++)
  {
   QT->SQL->Add("select Name from users where users="+IntToStr(i));
   ListBox1->Items->Add(QT->FieldByName("Name")->AsString);
   QT->SQL->Add("select Passw from users where users="+IntToStr(i));
   ListBox2->Items->Add(QT->FieldByName("Passw")->AsString);
  }

 QT->Close();
}


Я наверняка делаю, что-то не правильно....кто-нибудь может меня ткнуть носом в ошибку(и) и приветси правильный пример...
Краткое пояснение:
user, passw компонент TEdit
QT компонент TQuery

Цель: В user, passw вводится Имя и Пароль соответственно все это дело загружается в БД users.db
А потом ListBox1 заполняется Именами, а ListBox2 паролями....

Автор: Anikmar 22.1.2007, 19:46
Я в таких случаях использую параметризированные запросы.

Создаю запрос на этапе проектирования

Свойство SQL примерно так:
INSERT INTO users (users, Name, Passw) VALUES (0, :puser,:ppassw);

В программе
MyQuery->ParamByname(":puser")->Value = ... // Это для TADOQuery, для TQuery немного другой синтаксис
// Так для каждого параметра

MyQuery->ExecSQL();

Автор: Mpak 22.1.2007, 20:12
Anikmar,  smile

Добавлено @ 20:14 
Anikmar, Я первый раз с БД работаю (через Си), хотелось бы маленький пример разобрать...

Автор: Vyacheslav 22.1.2007, 23:53
А в чем смысл использование  ListBox  и TEdit? В получении лишней головной боли?

Автор: Anikmar 23.1.2007, 00:19
Вот так (примерно) я записываю новую запись (TADOQuery)
Код

    try
    {
        if (Uni == 0) pQuery->Insert(); else pQuery->Edit();

            pQuery->FieldByName("DateCreate")->AsDateTime = DateCreate;
            pQuery->FieldByName("UserCreate")->AsInteger = UserCreate;
            pQuery->FieldByName("UserEdit")->AsInteger = UserEdit;
            pQuery->FieldByName("DateEdit")->AsDateTime = DateEdit;
            pQuery->Post();
            pQuery->Connection->CommitTrans();
    }
    catch(...)
    {
        Ret = false;
        pQuery->Connection->RollbackTrans();
    }



Запрос выглядит как:
SELECT * FORM Table Where KeyField = :pKey

Для того, чтобы вывести список текущих пользователей в ListBox я делаю сначала список структур, имеющих примерно такую организацию:
AnsiString username; // Имя пользователя
int Key; // Идентификатор (ключ) записи
Считываю все записи из запроса в TList, отображаю по порядку в Listbox, из своего файла конфигурации беру ключ последнего выбранного пользователя, ставлю текущим эту запись в ListBox (чтобы не выбирать из списка каждый раз одно и то же) - и вперед

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)