Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.038 c
1-1199993925
kilonet
2008-01-10 22:38
2008.10.12
Создание отчёта


2-1220814318
Age
2008-09-07 23:05
2008.10.12
Ребята, подскажите кто знает!


15-1219290494
Slider007
2008-08-21 07:48
2008.10.12
С днем рождения ! 21 августа 2008 четверг


2-1220611069
Mundrik
2008-09-05 14:37
2008.10.12
Защита от перезаписи кодав памяти


2-1220234556
Abcdef123
2008-09-01 06:02
2008.10.12
Как получить подробную информацию об ошибке рантайма?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский