Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
ВнизВыборка по столбцу(Interbase) Найти похожие ветки
← →
Гэби (2008-09-04 12:51) [0]Как осуществить выборку по определенному столбцу если данные в этом столбце имеют тип String?
По типу Integer делаю так:IBQuery1.SQL.Add("SELECT * FROM STATION WHERE STATIONP = " + edit9.Text + "");
заранее спс
← →
Ega23 © (2008-09-04 12:53) [1]
IBQuery1.SQL.Add("SELECT * FROM STATION WHERE STATIONP = """ + edit9.Text + """");
Как-то так...
← →
Гэби (2008-09-04 12:59) [2]Мужык пасиба! Ты настоящий друг!
З.Ы. Кстати, почему так много " ?
← →
Правильный$Вася (2008-09-04 13:00) [3]использовать параметры
IBQuery1.SQL.Text:="SELECT * FROM STATION WHERE STATIONP = :1";
IBQuery1.Params[0].AsString:=edit9.Text;
← →
Ega23 © (2008-09-04 13:02) [4]
> Мужык пасиба! Ты настоящий друг!
пасиба - не булькает. :)
> З.Ы. Кстати, почему так много " ?
A character string, also called a string literal or string constant, consists of a quoted string, a control string, or a combination of quoted and control strings. Separators can occur only within quoted strings.
A quoted string is a sequence of up to 255 characters from the extended ASCII character set, written on one line and enclosed by apostrophes. A quoted string with nothing between the apostrophes is a null string. Two sequential apostrophes in a quoted string denote a single character, namely an apostrophe. For example,
"BORLAND" { BORLAND }
"You""ll see" { You"ll see }
"""" { " }
"" { null string }
" " { a space }
A control string is a sequence of one or more control characters, each of which consists of the # symbol followed by an unsigned integer constant from 0 to 255 (decimal or hexadecimal) and denotes the corresponding ASCII character. The control string
#89#111#117
is equivalent to the quoted string
"You"
You can combine quoted strings with control strings to form larger character strings. For example, you could use
"Line 1"#13#10"Line 2"
to put a carriage-return-line-feed between "Line 1" and "Line 2". However, you cannot concatenate two quoted strings in this way, since a pair of sequential apostrophes is interpreted as a single character. (To concatenate quoted strings, use the + operator or simply combine them into a single quoted string.)
A character string"s length is the number of characters in the string. A character string of any length is compatible with any string type and with the PChar type. A character string of length 1 is compatible with any character type, and, when extended syntax is enabled ({$X+}), a nonempty character string of length n is compatible with zero-based arrays and packed arrays of n characters. For more information about string types, see String types.
← →
b z (2008-09-04 13:06) [5]
> Как-то так...
"Расстрелять из пулемёта за такое." (c) ;)
← →
stas © (2008-09-04 13:09) [6]
IBQuery1.SQL.Add("SELECT * FROM STATION WHERE STATIONP = " + #39+edit9.Text+#39 + "");
← →
Правильный$Вася (2008-09-04 13:09) [7]
> b z (04.09.08 13:06) [5]
солидарен
ужасный пример для неиспорченного ума, причем от ума продвинутого, что вообще неожиданно
← →
Правильный$Вася (2008-09-04 13:11) [8]
> stas © (04.09.08 13:09) [6]
еще один любитель грабель
ты д"Артаньяна туда введи
я уж не говорю по sql injection
← →
Ega23 © (2008-09-04 13:11) [9]
> солидарен
> ужасный пример для неиспорченного ума, причем от ума продвинутого,
> что вообще неожиданно
А в чём суть вопроса? Как добавить апостроф в строку? Или как правильно параметры подставлять?
← →
Правильный$Вася (2008-09-04 13:13) [10]
> А в чём суть вопроса?
в корректном способе обращения к таблице по символьному полю
ЗЫ не придуривайся, а?
← →
stas © (2008-09-04 13:14) [11]Правильный$Вася (04.09.08 13:11) [8]
это уже другой вопрос.
от sql injection нужно х.п. использовать с четкой передачей параметров.
← →
b z (2008-09-04 13:16) [12]
> А в чём суть вопроса?
Учить надо хорошему, в любом случае.
← →
Правильный$Вася (2008-09-04 13:16) [13]
> от sql injection нужно х.п. использовать с четкой передачей
> параметров.
ХП для этого нафиг не нужно, а параметры - достаточная защита от injection
← →
Ega23 © (2008-09-04 13:22) [14]
> Учить надо хорошему, в любом случае.
Н-да? Расписать особенности поведения параметров для различных DAC, при подключенном НД, при отключенном НД?
А тебе известно ,что сам where может меняться, в зависимости от включенных-выключенных фильтров (и не только where)?
← →
Правильный$Вася (2008-09-04 13:28) [15]
> Ega23 © (04.09.08 13:22) [14]
опять передергиваешь
не чему учить, а как учить
← →
Ega23 © (2008-09-04 13:28) [16]
> не чему учить, а как учить
cм [4]. :)
← →
Правильный$Вася (2008-09-04 13:30) [17]
> cм [4]. :)
зануда /
← →
Ega23 © (2008-09-04 13:35) [18]
>
> зануда /
А чё зануда-то? Из вопроса видно, что автор вообще апостроф добавить к строке не может. Или вообще не имеет понятия о том, что такое строка.
С азов надо начинать... :)
← →
Правильный$Вася (2008-09-04 13:37) [19]
> Из вопроса видно, что автор вообще апостроф добавить к строке не может
это не есть факт, мсье Дюк
я вижу в вопросе совсем иное, обращение к БД, да и тему смотри
короче, позиции ясны, ходить по кругу - это для осликов на водяном насосе
← →
b z (2008-09-04 13:50) [20]
> Расписать особенности поведения
Иногда лучше вообще ничего не писать. :)
> А тебе известно
Честно, не понял при чем тут это и как это соотносится, но .. научите, раз уж так.
> Из вопроса видно
Из вопроса видно, что автор работает с компонентами доступа к данным, и делает это, не то чтобы неправильно, а можно сказать неграмотно.
А с апострафами можно вообще дело не иметь, используя всякие хорошие финкции, типа Format и т.д. Например мы в проектах нигде прямую конкатенацию строк не делаем (и для "молодым" это в codestyle пописано), и нагляднее и "засад" весьма меньше бывает.
← →
Ega23 © (2008-09-04 13:53) [21]
> Честно, не понял при чем тут это и как это соотносится,
> но .. научите, раз уж так.
А что непонятного? Есть выборка. Большая. Её надо отфильтровать. Причём пользователь может разные фильтры задавать. Like, not Like. Из GUI-интерфейса, естественно, не голый SQL, то за него "внутре" будет сделано.
← →
stas © (2008-09-04 14:02) [22]Правильный$Вася (04.09.08 13:16) [13]
Если доступ к данным оргнизован через Х.П. с распределенным доступом, то SQL Injection кроме ошибок ничего не даст.
← →
Гэби (2008-09-04 14:04) [23]спасибо всем откликнувшимся. Мне оч понравилось через параметры решить проблему.
← →
Правильный$Вася (2008-09-04 14:06) [24]
> Х.П. с распределенным доступом
это че такое?
← →
stas © (2008-09-04 14:10) [25]ну, распределить права доступа. К таблицам вообще всем закрыть, а к хранимкам пользовательским открыть юзерам, админским - только админу.
← →
Правильный$Вася (2008-09-04 15:06) [26]
> К таблицам вообще всем закрыть
с какого перепуга?
каждому - свое, и нефиг плодить посредников
← →
stas © (2008-09-04 15:43) [27]Правильный$Вася (04.09.08 15:06) [26]
Безопасность.
← →
Правильный$Вася (2008-09-04 15:56) [28]
> stas © (04.09.08 15:43) [27]
если не умеешь корректно раздать права на таблицы, то никакие ХП тебя не спасут, а только усугубят
и ради какой-то неясной безопасности делать ХП-обертку над каждой таблицей - это параноя
← →
Правильный$Вася (2008-09-04 15:57) [29]подумай, что будет с производительностью при соединении в запросе нескольких таких оберток
← →
Ega23 © (2008-09-04 16:00) [30]
> подумай, что будет с производительностью при соединении
> в запросе нескольких таких оберток
Для этого View используются, ХП немного для другого предназначены.
З.Ы. Складывается впечатление, что он ничего кроме MSSQL не видел и не щупал.
← →
Гэби (2008-09-04 16:02) [31]
> ну, распределить права доступа. К таблицам вообще всем закрыть,
> а к хранимкам пользовательским открыть юзерам, админским
> - только админу.
как это делается?
← →
Ega23 © (2008-09-04 16:03) [32]
> как это делается?
Не слушай его, это делается совсем не так.
← →
Правильный$Вася (2008-09-04 16:05) [33]
> > ну, распределить права доступа
> как это делается?
CREATE ROLE
GRANT, REVOKE
← →
stas © (2008-09-04 16:11) [34]Правильный$Вася (04.09.08 15:57) [29]
обертки между собой соединять не надо это уже результирующий набор.
← →
Правильный$Вася (2008-09-04 16:19) [35]
> обертки между собой соединять не надо это уже результирующий набор.
о, то есть ты на КАЖДЫЙ запрос будешь писать ПО ПРОЦЕДУРЕ?
гениально!
мне жалко твою базу и твоих клиентов
← →
stas © (2008-09-04 16:23) [36]Правильный$Вася (04.09.08 16:19) [35]
т.е. ты хочешь сказать что запрос написаный на клиенте легче для сервера и сети чем хранимая процедура?
← →
Ega23 © (2008-09-04 16:24) [37]
> о, то есть ты на КАЖДЫЙ запрос будешь писать ПО ПРОЦЕДУРЕ?
Ну, скажем, для MSSQL я имено так и делал. Только не по одной процедуре на запрос, а по одной на сущность (Insert, Update, Delete и Select). Просто MSSQL позволяет возвращать из ХП что угодно. В отличие от того же FB, где результирующий НД строго прописан.
← →
Правильный$Вася (2008-09-04 16:34) [38]
> хочешь сказать что запрос написаный на клиенте легче для
> сервера и сети чем хранимая процедура?
с точки зрения выполнения они одинаковы
но с точки зрения администрирования, поддержки, доработки лепить столько процедур - та хай меня покрасят
← →
Ega23 © (2008-09-04 16:36) [39]
> но с точки зрения администрирования, поддержки, доработки
> лепить столько процедур - та хай меня покрасят
В том-то и фишка MSSQL, что можно создать одну процедуру вообще на всё.
← →
stas © (2008-09-04 16:38) [40]Правильный$Вася (04.09.08 16:34) [38]
>>поддержки, доработки
то ли искать в проекте запрос изменять че-то перекомпиливать и выкладывать юзерам, то ли изменить хп на сервере.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.063 c