Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.12;
Скачать: CL | DM;

Вниз

Выборка по столбцу(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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.02 c
2-1220244012
@!!ex
2008-09-01 08:40
2008.10.12
Вывести битмап оп 4 точкам.


15-1219490687
POP
2008-08-23 15:24
2008.10.12
Список установленных COM портов в системе.


15-1219198234
Slider007
2008-08-20 06:10
2008.10.12
С днем рождения ! 20 августа 2008 среда


2-1220607629
lordalex
2008-09-05 13:40
2008.10.12
Старый добрый Excel


2-1220507763
Dagir
2008-09-04 09:56
2008.10.12
Передача данных