Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.53 MB
Время: 0.04 c
15-1141920731
Nic
2006-03-09 19:12
2006.04.02
Окно ввода логина и пароля


2-1142685685
Fenix
2006-03-18 15:41
2006.04.02
Добавление иконки на SpeedButton


15-1141829808
Dimedrol
2006-03-08 17:56
2006.04.02
На кухне вытяжка и 2 оголенных провода...


15-1142354254
TListBox
2006-03-14 19:37
2006.04.02
Не грузится Win2000 после замены видеокарты.


2-1142590572
fedpavel
2006-03-17 13:16
2006.04.02
TListView