MS Access глючит?!

Тема в разделе "WASM.WIN32", создана пользователем Android, 6 окт 2005.

  1. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Добавляю в базу (*.mdb) с помощью ODBC текстовы данные размером где-то по 5кб. Тип - LONGTEXT. Т.к. заранее не знаю размер, то использую функцию SQLPutData. После добавления 10-15 записей вылетает ошибка в функции SQLParamData. Ошибка связана с размером, если запись до 512байт - все работает. Кто-нибудь с этим сталкивался?

    [​IMG] _975482612__1.asm
     
  2. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Если есть примеры с манипулированием большими даннымив ODBC, киньте пожалуйста.
     
  3. Leshij

    Leshij New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2003
    Сообщения:
    15
    Попробуй тип memo
     
  4. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Leshij

    А в чем разница между ними? Я так понимаю это одно и тоже разными словами.



    Решил проблему так: все данные типа longtext пропускаю через хеш функцию, которая возвращает dword, по нему и проверяю уникальность.

    Алгоритм хеширования, долго не думая, написал такой: формирую dword по трем признакам размер текста, сумма байт и "суммарный xor" всех байт.



    Какие еще посоветуете независимые признаки? Что бы исключить случайное совпадение.
     
  5. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    На все 100 исключить наверное не получится, но можно посчитать crc32 longtext'а. Сразу и от размера и от взаиморасположения и от набора байт в строке будет зависимость. ИМХО это даст меньшее количество коллизий, чем твой способ, и быстрее будет.
     
  6. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    cresta

    спасибачки, поищу в гугуле
     
  7. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
  8. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Вот пример рабочий расчета crc32. Он считает crc файла, но вместо указателя на память, куда считан файл, можно подставить указатель на строку - посчитает crc для строки.

    [​IMG] 920125812__crc32.asm
     
  9. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Спасибо, я в инете нашел много примеров, щас подумал, когда я посчитывал сумму это не защищало от перестановки байт местами.
     
  10. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Ошибка была в том, что когда я посылал запрос "SELECT id FROM Text WHERE value=?" (value - это тексты), то odbc драйвер почему-то выдавал ошибку(я так и не понял почему), а теперь я ищу текст по crc32 и все работает без глюков.