Текущий архив: 2006.04.02;
Скачать: CL | DM;
ВнизВопрос про копирование БД Найти похожие ветки
← →
Мух (2006-03-17 08:45) [0]Как скопировать выделенные строки в DBGrid"е одной таблицы, в другую таблицу. Через компонент TADOTable...
И еще вопрос по удалению: Как очистить таблицу TADOTable. В компоненте TTable была команда EmptyTable, а тут такого нету... удаление через циклы While ... do не устраивает!
← →
msguns © (2006-03-17 09:31) [1]1.С карандашом и блокнотом штудируем
http://delphimaster.net/view/3-1142481768/
2.Изучаем SQL
3.Выбрасываем нафих TADOTable
4.Проходим курс интерсивной иглатерапии и навсегда забываем о лаптях под названием TXXTable
← →
Мух (2006-03-17 10:19) [2]Увы SQL не знаю, а программа уже написана... сроки коротки!:(
осталось только это!:(
← →
Sergey13 © (2006-03-17 10:33) [3]2 [2] Мух (17.03.06 10:19)
>Увы SQL не знаю
>удаление через циклы While ... do не устраивает!
Так что ты хочешь?
но при этом
>программа уже написана
Жалко заказчика.
← →
Чапаев © (2006-03-17 10:35) [4]
> 3.Выбрасываем нафих TADOTable
Переходим к SQL-запросам и имеем геморрой в форме SQL-инъекций?
← →
msguns © (2006-03-17 10:37) [5]>Чапаев © (17.03.06 10:35) [4]
>Переходим к SQL-запросам и имеем геморрой в форме SQL-инъекций?
Переведи
← →
Sergey13 © (2006-03-17 10:40) [6]2[4] Чапаев © (17.03.06 10:35)
Ты колешься SQL?!!! Расскажи как! 8-)
← →
msguns © (2006-03-17 10:54) [7]>Sergey13 © (17.03.06 10:40) [6]
>Ты колешься SQL?!!! Расскажи как! 8-)
Дык он же пишет, что это от геморроя. Видимо, туда прям и колет ;)
← →
Чапаев © (2006-03-17 10:55) [8]
> >Переходим к SQL-запросам и имеем геморрой в форме SQL-инъекций?
> Переведи
Погугли на предмет SQL injection.
Если вкратце... К примеру, есть у нас запрос такого вида: SELECT * FROM MyTable WHERE UserName="edtUserName.Text" AND Password="edtPassword.Text".
В edtPassword я ввожу нечто вроде: MyPass" OR "True"="True
В итоге получится: SELECT * FROM MyTable WHERE UserName="edtUserName.Text" AND Password="MyPass" OR "True"="True". Условие всегда истинно. Я получил данные любого пользователя, указав любой бред в пароле.
← →
Sergey13 © (2006-03-17 11:04) [9]2[8] Чапаев © (17.03.06 10:55)
Если подставлять логин и пароль в текст запроса и при этом думать, что ты сломал защиту сервера, то наверное ты уже укололся. 8-)
← →
Чапаев © (2006-03-17 11:09) [10]я не думаю, что взломал защиту сервера, я знаю, что приведенный код работает, если автор программы не предусмотрел проверку строк на наличие недопустимых символов и т.п. Вот и вопрос: а нафига мучиться с кучей проверок, если можно пользоваться TxxxTable?
← →
Sergey13 © (2006-03-17 11:14) [11]2[10] Чапаев © (17.03.06 11:09)
> я знаю, что приведенный код работает
Так формальная работоспособность кода не говорит ничего о его (кода) правильности и наличии в нем смысла.
>Вот и вопрос: а нафига мучиться с кучей проверок, если можно пользоваться TxxxTable?
Да. Крутой вопрос! Постов на 50, как минимум. 8-)
Я проще скажу - шашкой махать было актуально в годы вашей активной деятельности в гражданскую. 8-)
Но мир с тех пор несколько изменился.
← →
sniknik © (2006-03-17 11:16) [12]Чапаев © (17.03.06 10:55) [8]
запрос идиот писал? или "программист" первого месяца обучения?
> SELECT * FROM MyTable WHERE UserName="edtUserName.Text" AND Password="edtPassword.Text".
правильней (и это гдето на втором месяце ясно становиться) пользоваться параметрами (ну придумали же их зачемто?)
получаем
SELECT * FROM MyTable WHERE UserName=:UserName AND Password=:Password
параметр(UserName).значение:= edtUserName.Text;
параметр(UserName).значение:= edtPassword.Text;
что тут начсет "injection"? а ведь пишут про это ну буквально на 10-20 странице любого букваря по базам.
← →
Чапаев © (2006-03-17 11:16) [13]
> Я проще скажу - шашкой махать было актуально в годы вашей
> активной деятельности в гражданскую. 8-)
Молодец, пошутил. Наверное, даже думаешь, что что-то новое и остроумное придумал в этой шутке.
← →
sniknik © (2006-03-17 11:17) [14]второй ошибся, надо
параметр(Password).значение:= edtPassword.Text;
← →
Чапаев © (2006-03-17 11:18) [15]
> или "программист" первого месяца обучения?
Угу. Конференция ведь -- для начинающих. ;-)
← →
Плохиш © (2006-03-17 11:18) [16]
> В итоге получится: SELECT * FROM MyTable WHERE UserName="edtUserName.
> Text" AND Password="MyPass" OR "True"="True". Условие всегда
> истинно. Я получил данные любого пользователя, указав любой
> бред в пароле.
Хорошо, что это написано в конференции "начинающим". Гнать надо таких крютых программеров.
← →
Плохиш © (2006-03-17 11:26) [17]
> sniknik © (17.03.06 11:16) [12]
> что тут начсет "injection"? а ведь пишут про это ну буквально
> на 10-20 странице любого букваря по базам.
В конце прошлого года это с большими глазами мусляколось на heise.de как огромная дыра в защите :-)
Пришли ко мне коллеги и говорят - Дыра в твоей системе, сейчас базу данных порушим. Попытались, обломились, успокоились :-)
> Чапаев © (17.03.06 11:09) [10]
> а нафига мучиться с кучей проверок
и никаких проверок на введённые данные не стоит.
← →
msguns © (2006-03-17 12:00) [18]>Чапаев © (17.03.06 10:55) [8]
Если б Анка увидела такой твой запрос, она мигом сбежала бы к Фурманову. ;)
← →
Sergey13 © (2006-03-17 12:03) [19]2[18] msguns © (17.03.06 12:00)
Не сбежала бы. Она бы им воспользовалась и получила бы доступ ко всем пулеметам сразу - и красным и белым. 8-)
← →
Мух (2006-03-17 12:12) [20]
> Жалко заказчика.
А че его жалеть, прога все равно бесплатна... да и не нужна тут крутость и скорость... ведь будет мало записей. порядка до 300 максимум
> Так что ты хочешь?
Однажды я тут выложил код по удалению записей в таблице через while ... do
получил много оскроблений в свой адрес... потом показали Table.EmptyTable;
Может и в TADOTable есть быстрые способы!
Значит никто не знает как можно скопировать выделенные записи в Гриде, в другую таблицу?
← →
Sergey13 © (2006-03-17 12:20) [21]2[20] Мух (17.03.06 12:12)
> потом показали Table.EmptyTable;
>Может и в TADOTable есть быстрые способы!
У разных компонент бывают разные методы. Я вот за 5 секунд нашел в справке метод DeleteRecords - Deletes one or more records in the dataset.
Что мешало залезть в справку тебе за 4 с лишним часа?
>Значит никто не знает как можно скопировать выделенные записи в Гриде, в другую таблицу?
Там же можно найти про SelectedRows
← →
msguns © (2006-03-17 12:53) [22]>Мух (17.03.06 12:12) [20]
>А че его жалеть, прога все равно бесплатна... да и не нужна тут крутость и скорость... ведь будет мало записей. порядка до 300 максимум
Если 300 записей максимум, то СУБД вообще не нужна.
>Однажды я тут выложил код по удалению записей в таблице через while ... do
получил много оскроблений в свой адрес... потом показали Table.EmptyTable;
Может и в TADOTable есть быстрые способы!
Ты хочешь из пулемета "Максим" сбить всю вражескую авиацию и канючишь, чтобы тебе дали такие патроны. Забудь про Table.
Для очистки ЛЮБОЙ таблицы есть универсальный способ:
Delete from Table
На так нелюбимом тебою сиквеле.
>Значит никто не знает как можно скопировать выделенные записи в Гриде, в другую таблицу?
Вопросы, которые ты задаешь, свидетельствуют о твоем полном непонимании СУЩНОСТИ работы с базами данных. Гриды, тэйблы, таблицы, базы у тебя в одной куче. С таким "плинтусным" уровнем (спасибо славнозвистной TTable !) нельзя подходить к разработке БД.
Тебе надо разобраться в концепции БД, понять разницу между хранением, представлением и отображением данных. Без этого ты не напишешь ни одной сколь-нибудь стОящей "базовой" программы.
← →
Anatoly Podgoretsky © (2006-03-17 13:18) [23]Мух (17.03.06 12:12) [20]
Однажды я тут выложил код по удалению записей в таблице через while ... do
получил много оскроблений в свой адрес... потом показали Table.EmptyTable;
Может и в TADOTable есть быстрые способы!
Есть - это метод Delete
← →
Anatoly Podgoretsky © (2006-03-17 13:19) [24]DeleteRecords
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.046 c