• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите новичку с запросами к базам

  • Автор темы Parasit
  • Дата начала
P

Parasit

Проблема состоит из того что я не знаю как правильно писать запросы к базе

Вот процес такой (обьясняю как умею :) простите зеранее)

1. создал базу через датабайз мэнаджер Парадокс 7 в СиБуилдере
2. Теперь допустим надо внести запись из "Едит1" в какойнибудь опр-й столбец созд-й таблицы
Вот покажите самому глупому как пожалуйста!

Я делал так (не смейтесь :D если чё не так)

Query1->SQL->Text = "INSERT INTO tablename (name) VALUES ('чтото')";

не робит и еще я так понимаю вдруг заработает (маловерояно правда)
он запишет в таблицу tablename и столбец name значение VALUES ('чтото')";
а мне нужно чтоб он именно значение взял из "едит1" и вставил

Всем заранее огромное спасибо!
 
L

LAW

У Вас обязательная цель использовать SQL?
Ведь можно воспользоваться навигационной системой доступа к БД.
Что-то типа:

Код:
Query1->Edit();
Query1->FieldByName("name")->AsString="что-то";
Query1->Post();

Удачи!
 
B

Barmutik

А какая конкретно ошибка?

Ну если из Эдита то что-то аля так:

Код:
Query1->SQL->Text = 'INSERT INTO tablename (name) VALUES (' + #39 + Edit1.Text + #39 + ')';
 
U

useshorttime

сделал уже две БД в Builder6, ни разу не пользовался sql (не знаю к добру это или нет)
Мой вариант вашей задачи:
Table1->Open();
Table1->Edit();
Table1->FieldByName("Field1")->Value = Edit1->Text;
Table1->Post();

У меня вопрос к опытным: есть ли вообще преимущество использования sql-вставок в код программы?
 
L

LAW

По моему опыту если база хранит данные в dbf, то ситуация с навигационной системой и SQL разная.
Подчиняется общему правилу: Если обработка происходит с группой записей - быстрее SQL, если с 1 - быстрее навигация.
Например: GotoKey() стабатывает во много раз быстрее SELECT - WHERE, при условии, что отбирается 1 уникальная запись (RecNo не всчёт). А если необходимо сделать массовый UPDATE - выигрывает SQL.
 
P

Parasit

Вот как изменить значение какого либо столбца и определенной строки в таблице
и еще вопрос как можно удалить "строки" в таблице по условию:

Например стобец содержит в нескольких строках цифры 102
вот как удалить все строки содержащие в столбце цифру 102
 
B

Barmutik

Код:
DELETE FROM YourTableName WHERE YourColumnName = 102
 
P

Parasit

А если типа Table1->DELETE () можноли как ?
 
L

LAW

Однозначно.
Только нужно сначала фильтр поставить.

Table1->Filtered=false;
Table1->Filter="Field1=102";
Table1->Filtered=true;
Table1->First();
While(!Table1->Eof)
{
Table1->Delete();
}

Но как я уже говорил выше операция на группой записей в SQL при использовании DBF работает быстрее.
 
P

Parasit

ильтр это типа выделение необходимого потом делет?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!