|
|
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
День добрый. Чё-то я не догоняю. При попытке обновить строковое поле через delphi, появилась проблема. UPDATE [TableName1] SET ColumnC = eExpression1 ... где eExpression1= г. Такой-то Как передать eExpression1. Если просто eExpression1, то ошибка. Если просто "eExpression1", то ошибка когда: eExpression1=г. "Такой-то. Если просто 'eExpression1', то ошибка когда: eExpression1=г. Такой'то. Если просто [eExpression1], то ошибка когда: eExpression1=г. Такой[то. Чё делать? Как дать занть ФПРО что это строка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 17:55 |
|
||
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
А так Query.sql.text:='UPDATE TableName1 SET ColumnC ='+ ''''+eExpression1+''''; Но если в eExpression1 есть кавычка, то ее надо удвоить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 18:18 |
|
||
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
Александр КордюмА так Query.sql.text:='UPDATE TableName1 SET ColumnC ='+ ''''+eExpression1+''''; Но если в eExpression1 есть кавычка, то ее надо удвоить. Вроде можно. Ща проверим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 18:43 |
|
||
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
Александр КордюмА так Query.sql.text:='UPDATE TableName1 SET ColumnC ='+ ''''+eExpression1+''''; Но если в eExpression1 есть кавычка, то ее надо удвоить. Нет никатит. Поблема осталась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 18:51 |
|
||
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
Опубликуйте исходный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 18:55 |
|
||
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
Кто сможет выполнить sql запрос. SELECT * from table where field=строка([["]"']) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 18:56 |
|
||
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
SELECT * from table where field=''строка'' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 19:32 |
|
||
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
nikolozSELECT * from table where field=''строка'' Error. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 19:52 |
|
||
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
nikolozSELECT * from table where field=''строка'' SELECT * from table where field=[строка] ? P.S. А какая то ошибка? Может не находится таблица table? Тогда надо дать права на эту таблицу тому из под чего Вы там работаете... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 22:42 |
|
||
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
Sergey Ch nikolozSELECT * from table where field=''строка'' SELECT * from table where field=[строка] ? P.S. А какая то ошибка? Может не находится таблица table? Тогда надо дать права на эту таблицу тому из под чего Вы там работаете... Проблема не в таблице. Проблема в строке на поиск. Т.к. в ней есть все символы, которые использует ФОКС для обрамления символьных строк. В результате ошибка. Если приложение (например на Дельфи) будет использовать в качестве запроса данную строку (значения данного поля), то выскачить исключение. Ведь пользователь может ввести такую строку. И эту проблему похоже не обойти?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2006, 12:00 |
|
||
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
Не давайте пользователю вводить какой-нибудь из ограничителей VFP. Не знаю, как это будет на Delphi, а в VFP я делаю это так в событии KeyPress, например, объекта класса EditBox: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2006, 13:02 |
|
||
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
Я помоему нашёл решение. Покраёне для Дельфи. Заменять все "не такие" символы на chr(asc("нетакой символ")). Например: в поле есть запись со значением в поле: '[""]'. То заменить его на: select * from table where field=chr(39)+chr(91)+chr(34)+chr(34)+chr(93)+chr(39) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2006, 13:46 |
|
||
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
Для FoxPro в качестве границы символьной константы можно использовать 3 символа: квадратные скобки (открывающая и закрывающая) одинарные кавычки двойные кавычки Другими словами, символьная константа - это то, что начинается с одного из этих символов и кончается парным ему символом. Если сама константа содержит внутри себя символ, парный тому, который начинает символьную константу, то надо выделить этот символ в отдельную константу . Не экранировать (такого понятия в FoxPro нет), а именно выделить. Разбить одну константу на несколько. Например, есть символьная константа вида Код: plaintext Т.е. она содержит в себе вообще все символы, которые могут быть использованы в качестве ограничителя символьных констант в FoxPro. В этом случае подобную константу следут сформировать следующим образом Код: plaintext Как это сделать технически в Delphi - ищите сами. Думаю, должны быть функции символьного анализа строк. А в FoxPro передаете не одну константу, а выражение (сумму) констант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2006, 20:43 |
|
||
|
Строку в БД.
|
|||
|---|---|---|---|
|
#18+
Hi AbelKasum! Для этого просто меняют стиль - использование жестко пробитых строковых литералов в SQL команде на использование параметров. Не знаю как это будет в delphi, а в самом фоксе это будет примерно так: было: lcNewVal = "My [really bad] string" lcSQL = "UPDATE table1 SET column1 = [" + m.lcNewVal + "]" SQLEXEC(lnHandle, m.lcSQL) * Вызовет ошибку из-за наличия в строке тех-же символов что и саму строку в SQL команде ограничивают а вот так гораздо лучше: lcNewVal = "My [really 'bad] string" + [and even " here] lcSQL = "UPDATE table1 SET column1 = ?m.lcNewVal" SQLEXEC(lnHandle, m.lcSQL) * А вот тут ошибки не будет - т.к. параметр переаётся отдельно, и не "сливается" с текстом команды. Конечно способ реализации этого в delphi будет другой - причём будет зависеть от того, через какие средства идёт доступ - через ODBC или ADO или даже голый OLE DB... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2006, 19:23 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33723963&tid=1591696]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
176ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 517ms |

| 0 / 0 |
