![]() |
|
|
![]()
|
|
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
У меня нормально программа работает с bindValue, в базе данных SQLITE по 5000 текстовых строк с названием фирм, а там и кавычки на любой манер, косяков замечено небыло. |
|||
|
||||
| ssstttuuufff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
Созрел прототип небольшого извращения. Буду переводить QString в QByteArray, а потом обратно. Должно работать.
|
|||
|
||||
| nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 13 Всего: 181 |
Я попробовал с bindValues(), всё работает, может проблема с не-utf8 кодировкой XML?
Присоединённый файл ( Кол-во скачиваний: 7 )
qsqlite_escape.tar.bz2 1,06 Kb-------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
| ssstttuuufff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
Интересно...
Вставил
в то место, где парсер получает значение тега <description>. И у меня вылезло штку 6 сообщений. А последним 6-м сообщением было как-раз то, что у меня и записывалось в базу. Т.е. проблема на уровне парсера. Он почему-то считывает тег по частям. Блин, задолбало. Может быть дейстивителньо как-то кодирова xml влияет. Хотя вроде бы Qt должна отследить её и переводить всё в UTF-8. Это сообщение отредактировал(а) ssstttuuufff - 7.5.2008, 00:38 |
|||
|
||||
| ssstttuuufff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
Такс. Удалось решить проблему. Но это скорее какой-то грязный hack получился. Выяснилось, что XML парсер получал значение какого-либо тега не атомарно, так сказать, а по частям. Почему - для меня великая загадка.
Я же, рассчитывая на то, что функция QXmlStreamReader::text() получает всё содержимое тега за раз, сохранял содержимое в переменную вот так: xmlDataElement = xml.text().toString(); itemDescription = xmlDataElement; В итоге в переменную заносилась последняя прочитанная парсером строка, поэтому только она в базу и заносилась. Теперь я делаю так: itemDescription += xmlDataElement; В конечном итоге строка получается правильно "слеплена" и в базу заносится полностью. Мне просто интересно - это такая бага-фича QXmlStreamReader'а или со мной что-то не так? В любом случае всем ОГРОМНОЕ СПАСИБО Пойду спать. |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Судя по описанию QStringRef очень похоже на происходящее. Для работы с подстроками, для экономии памяти выдается частями и т.п.
Походу дела это что-то типа плавающего указателя и по какой-то причине указатель получается кривым. Это сообщение отредактировал(а) SABROG - 7.5.2008, 08:54 |
|||
|
||||
| ssstttuuufff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
SABROG, Хм, очень интересно. Наверное действительно всё дело в QStringRef.
P.S. Неслабый оффтопик получился |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |