|
|
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
Нужно в базу записывать небольшие куски (до 60 байт) бинарных данных. Также на это поле нужен уникальный ключ. Создал в базе поле Код: sql 1. А как теперь записать в него данные, при условии, что в подключении указано Код: sql 1. Как пробовал Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. везде вылетает ошибка arithmetic exception, numeric overflow, or string truncation Cannot transliterate character between character sets. Сервер IB2009. Компоненты IBX. Delphi XE3 С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2018, 18:09 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, OCTETS в Interbase нету? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2018, 18:11 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисOCTETS в Interbase нету? Должно быть. Это очень древняя вещь. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2018, 18:23 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, попробуй Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2018, 18:36 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисOCTETS в Interbase нету?Есть. Сейчас щупаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2018, 18:43 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
Симонов Дениспопробуй Код: sql 1. Адекватно записать данные не удается Код: pascal 1. 2. вычисляет длину данных как Код: pascal 1. соответственно два стоящих подряд #0#0 усекает данные. SetAsAnsiString определена как Код: pascal 1. 2. 3. 4. и теперь один #0 усекает строку. Вызов CreateBlobStream приводит к AV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2018, 19:29 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
Все, что приходит в голову - это сохранять в HEX или на клиента отдавать поле как BLOB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2018, 19:39 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
Выкинуть DataSet и использовать IBSQL не предлагать?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2018, 20:00 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВыкинуть DataSet и использовать IBSQL не предлагать?..Пока нет. Внутренний фреймворк заточен на TDataSet ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2018, 20:05 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
Если отнаследоваться от TIBDataSet, переопределить InternalInitFieldDefs и на CHARSET NONE/OCTETS вернуть FieldType = ftBlob взлетит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2018, 21:04 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
Какого типа поле создаётся в датасете ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2018, 21:57 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, собственно, поскольку в большинстве компонент varchar или char преобразуется в строку C с окончанием нулями, то никакие бинарные данные туда записать нельзя. OCTETS может чего и даст, но не факт. Поэтому, бинарные данные пишутся только в блоб. _Vasilisk_Также на это поле нужен уникальный ключ. это ахинея, ответственно заявляю. По бинарным данным, особенно длиной 60 байт, не может быть никакого уникального ключа. Читаем http://www.ibase.ru/natural-keys-versus-atrificial-keys-by-tentser/ выход - доп. столбец как хэш этих 60 бинарных байт, и вот его уже можно делать уникальным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2018, 00:34 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
kdvв большинстве компонент varchar или char преобразуется в строку C с окончанием нулями Нет, так делают только очень-очень глупые компоненты, а таких всё-таки не большинство. kdvПо бинарным данным, особенно длиной 60 байт, не может быть никакого уникального ключа. Да ну? 4 или 8 бинарных байт целого - уникальный ключ в порядке, 16 байт гуида - уникальный ключ в порядке, а на 60 вдруг внезапный качественный скачок и уникальный ключ невозможен? Ты ещё скажи, что на строках вообще уникальные ограничения невозможны... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2018, 12:28 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
hvladКакого типа поле создаётся в датасете ?ftString (TIBStringField) kdvвыход - доп. столбец как хэш этих 60 бинарных байт, и вот его уже можно делать уникальным.Это не выход 1. Хеш по определению не может быть уникальным 2. Хеш это те-же бинарные данные, которые нужно как-то сохранять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2018, 16:11 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
Хеш (тем паче их много разных) - всё же имеет представление в виде строки. Хотя в твоём случае особого смысла в нём нет, лучше добить обработку binary. Data содержит корректные данные (байты) ? Строковое представление тебе, по сути, вроде бы не нужно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2018, 16:23 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_hvladКакого типа поле создаётся в датасете ?ftString (TIBStringField)А должно быть [var]binary. Без этого не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2018, 16:29 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамХеш (тем паче их много разных) - всё же имеет представление в виде строки.Я с тем же успехом могу данные записать в hex Гаджимурадов РустамData содержит корректные данные (байты) ?Ты сейчас о поле? Я же говорю - обрезается до перого #0 если такой встретится Гаджимурадов РустамСтроковое представление тебе, по сути, вроде бы не нужно.Нет Гаджимурадов Рустамлучше добить обработку binary.В понедельник еще поковыряюсь hvladА должно быть [var]binary.Это какой тип? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2018, 17:02 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_> Ты сейчас о поле? Я же говорю - обрезается Нет, конечно, о свойстве (не помню, доступно ли оно в TField). Хотя если у тебя даже Get/SetData не пашут, то, наверное, нет. > Это какой тип? ftBytes, видимо. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2018, 17:18 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_hvladА должно быть [var]binary.Это какой тип?Насколько я понимаю и помню эту кухню, нужно править TIBCustomDataSet.InternalInitFieldDefs, чтобы оно создавало ftVarBytes (ftBytes) при наличии чарсета OCTETS у поля SQL_VARYING (SQL_TEXT) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2018, 19:01 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
hvladНасколько я понимаю и помню эту кухню, нужно править TIBCustomDataSet.InternalInitFieldDefs, чтобы оно создавало ftVarBytes (ftBytes) при наличии чарсета OCTETS у поля SQL_VARYING (SQL_TEXT)Не взлетело. При подмене типа получаем картину Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. В начало буфера добавляется еще и длина. А потом, контрольный в голову Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. InternalSetFieldData имела в виду мои ftVarBytes Если тип поля в InternalInitFieldDefs вернуть как ftBlob, то на Post возникает "Internal error" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 16:39 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Код: pascal 1. ну это чепуха для бинарных данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 16:46 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
Симонов Денисну это чепуха для бинарных данныхЯ знаю. Но так оно есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 17:03 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
ну раз уж начал править, правь Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 17:04 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_В начало буфера добавляется еще и длинаУ себя в буфере могут и фазу луны хранить, тебе-то что _Vasilisk_InternalSetFieldData имела в виду мои ftVarBytesНу так надо её наказать научить PS За многократное повторение PRecordData(Buff)^.rdFields[FMappedFieldPosition[Field.FieldNo - 1]] автора этого кода нужно сколько же раз проклясть канделябром... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 17:10 |
|
||
|
Сохранение бинарных данных
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Код: pascal 1. 2. добавь проверку CHARSET. Как не подскажу, пока нет времени разбираться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 17:16 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39717097&tid=2040259]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 294ms |

| 0 / 0 |
