Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

Вопрос про копирование БД   Найти похожие ветки 

 
Мух   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.052 c
6-1134394900
user51
2005-12-12 16:41
2006.04.02
как обратися к сокету зная SocketHandle


1-1141215732
Radix
2006-03-01 15:22
2006.04.02
Форма сворачивается в левый нижний угол


2-1142694708
beglec
2006-03-18 18:11
2006.04.02
Не совсем корректная работа с потоком


15-1141723512
lak-b
2006-03-07 12:25
2006.04.02
JavaScript: создание объектов


2-1142475814
tigra
2006-03-16 05:23
2006.04.02
DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский