Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синтаксис Paradox 7, Заполнение БД из Си 
:(
    Опции темы
Mpak
Дата 22.1.2007, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 12.11.2006

Репутация: 4
Всего: 7



Код

__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 паролями....


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
Anikmar
Дата 22.1.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Я в таких случаях использую параметризированные запросы.

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

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

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

MyQuery->ExecSQL();
PM MAIL ICQ   Вверх
Mpak
Дата 22.1.2007, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 12.11.2006

Репутация: 4
Всего: 7



Anikmar,  smile

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


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
Vyacheslav
Дата 22.1.2007, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



А в чем смысл использование  ListBox  и TEdit? В получении лишней головной боли?


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Anikmar
Дата 23.1.2007, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Вот так (примерно) я записываю новую запись (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 (чтобы не выбирать из списка каждый раз одно и то же) - и вперед
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1053 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.