Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QSqlQuery и экранирование символов. 
V
    Опции темы
SABROG
Дата 6.5.2008, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(ssstttuuufff @ 6.5.2008,  23:16)
SABROG, 

так у меня тоже нормально работает. Может быть дело в placeholder'ах ? Может быть надо запросы все делать без bindValue и т.д. ?

У меня нормально программа работает с bindValue, в базе данных SQLITE по 5000 текстовых строк с названием фирм, а там и кавычки на любой манер, косяков замечено небыло.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
ssstttuuufff
Дата 6.5.2008, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.3.2008

Репутация: нет
Всего: нет



Созрел прототип небольшого извращения. Буду переводить QString в QByteArray, а потом обратно. Должно работать.
PM MAIL   Вверх
nickless
Дата 7.5.2008, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 13
Всего: 181



Я попробовал с bindValues(), всё работает, может проблема с не-utf8 кодировкой XML?

Код

% qmake --version
QMake version 2.01a
Using Qt version 4.3.3 in /usr/lib/qt4
% sqlite3 --version
3.5.6


Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  qsqlite_escape.tar.bz2 1,06 Kb


--------------------
user posted image

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
PM MAIL   Вверх
ssstttuuufff
Дата 7.5.2008, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.3.2008

Репутация: нет
Всего: нет



Интересно... 

Вставил 
Код

QMessageBox::warning(0, tr("Item Description"), itemDescription);

в то место, где парсер получает значение тега <description>. И у меня вылезло штку 6 сообщений. А последним 6-м сообщением было как-раз то, что у меня и записывалось в базу. Т.е. проблема на уровне парсера. Он почему-то считывает тег по частям. Блин, задолбало. Может быть дейстивителньо как-то кодирова xml влияет. Хотя вроде бы Qt должна отследить её и переводить всё в UTF-8.

Это сообщение отредактировал(а) ssstttuuufff - 7.5.2008, 00:38
PM MAIL   Вверх
ssstttuuufff
Дата 7.5.2008, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.3.2008

Репутация: нет
Всего: нет



Такс. Удалось решить проблему. Но это скорее какой-то грязный hack получился. Выяснилось, что XML парсер получал значение какого-либо тега не атомарно, так сказать, а по частям. Почему - для меня великая загадка. 

Я же, рассчитывая на то, что функция QXmlStreamReader::text() получает всё содержимое тега за раз, сохранял содержимое в переменную вот так:

xmlDataElement = xml.text().toString(); 
itemDescription = xmlDataElement;

В итоге в переменную заносилась последняя прочитанная парсером строка, поэтому только она в базу и заносилась.

Теперь я делаю так:

itemDescription += xmlDataElement;

В конечном итоге строка получается правильно "слеплена" и в базу заносится полностью.

Мне просто интересно - это такая бага-фича QXmlStreamReader'а  или со мной что-то не так?
В любом случае всем ОГРОМНОЕ СПАСИБО  smile  за помощь, терпение и потраченное на меня время.
Пойду спать.  smile 

PM MAIL   Вверх
SABROG
Дата 7.5.2008, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Судя по описанию QStringRef очень похоже на происходящее. Для работы с подстроками, для экономии памяти выдается частями и т.п.

Походу дела это что-то типа плавающего указателя и по какой-то причине указатель получается кривым.

Это сообщение отредактировал(а) SABROG - 7.5.2008, 08:54


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
ssstttuuufff
Дата 7.5.2008, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.3.2008

Репутация: нет
Всего: нет



SABROG, Хм, очень интересно. Наверное действительно  всё дело в QStringRef.

P.S. Неслабый оффтопик получился  smile
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.