Russian Qt Forum
Ноябрь 24, 2024, 05:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: не та кодировка  (Прочитано 4317 раз)
kadr
Гость
« : Ноябрь 06, 2009, 14:05 »

Привет всем есть запрос в mysql
SQL = QString("SELECT code,name,zavod,price,kolvo,srokdo, FROM protek WHERE name LIKE '%1'")
 .arg(ui->korzina->item(i,0)->text().trimmed());
q.exec(SQL);
а вот ошибка
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM protek WHERE name LIKE 'НепонимающийНепонимающийНепонимающий НепонимающийНепонимающий?« ?­?НепонимающийНепонимающий НепонимающийНепонимающий НепонимающийНепонимающий ??/?? 20' at line 1 QMYSQL: Unable to execute query"
Вопрос:
Как мне перекодировать вот это НепонимающийНепонимающийНепонимающий НепонимающийНепонимающий?« ?­?НепонимающийНепонимающий НепонимающийНепонимающий НепонимающийНепонимающий ??/?? 20 в нормальный вид, база находиться в кодировке cp1251!  
Тут типа знаки вопросов одни а не смайлики.
И как мне узнать в какой кодировке запись (НепонимающийНепонимающийНепонимающий НепонимающийНепонимающий?« ?­?НепонимающийНепонимающий НепонимающийНепонимающий НепонимающийНепонимающий ??/?? 20) находиться в данный момент?
« Последнее редактирование: Ноябрь 06, 2009, 14:10 от kadr » Записан
Aleksey_Zh
Гость
« Ответ #1 : Ноябрь 06, 2009, 14:09 »

Привет! Убери последнюю запятую перед from
Записан
Aleksey_Zh
Гость
« Ответ #2 : Ноябрь 06, 2009, 14:15 »

А вообще для проверки запросов вместе с Qt идет полезная дёмка - SQL brouser называется. Вставляй в нее запрос но с готовыми данными. А свои  данные всегда в правильный запрос у себя в программе подставишь
Записан
kadr
Гость
« Ответ #3 : Ноябрь 06, 2009, 14:22 »

Привет! Убери последнюю запятую перед from
Ошибка вылетать перестала, но данные все равно не достаются от туда!
 SQL = QString("SELECT code,name,zavod,price,kolvo,srokdo FROM protek WHERE name LIKE '%1'")
          .arg(ui->korzina->item(i,0)->text().trimmed());
        q.exec(SQL);
        qDebug() << ui->korzina->item(i,0)->text().trimmed() << "|" <<q.value(0).toInt() <<q.value(1).toString() << q.value(2).toString() << q.value(5).toString();
SQL.clear();
SQL = QString("INSERT INTO zakaz VALUES (%1, '%2', '%3', %4, %5, '%6', '%7','%8')")
.arg(q.value(0).toInt())
.arg(ui->korzina->item(i,0)->text().trimmed())
.arg(q.value(2).toString())
.arg(ui->korzina->item(i,3)->text().trimmed())
.arg(ui->korzina->item(i,1)->text().trimmed())
.arg(q.value(5).toString())
.arg(ui->korzina->item(i,4)->text().trimmed())
.arg(date.currentDate().toString("dd.MM.yyyy"));
z.exec(SQL);
Вывод qDebug() << ui->korzina->item(i,0)->text().trimmed() << "|" <<q.value(0).toInt() <<q.value(1).toString() << q.value(2).toString() << q.value(5).toString();
"ВАЛЕРИАНЫ ЭКСТРАКТ ТАБ П/О 20 МГ №10 ДАЛЬХИМФАРМ-Р" | 0 "" "" ""
Выводит только то что у меня в таблице, а из запроса ничего не выводит!
Записан
Aleksey_Zh
Гость
« Ответ #4 : Ноябрь 06, 2009, 14:28 »

У тебя тут 2 запроса. Не выводит по какому именно?
Записан
Aleksey_Zh
Гость
« Ответ #5 : Ноябрь 06, 2009, 14:39 »

Кстати, ты не пробовал выбирать начальное там, может быть следующее значение из полученного набора данных?
Записан
kadr
Гость
« Ответ #6 : Ноябрь 06, 2009, 14:49 »

У тебя тут 2 запроса. Не выводит по какому именно?
Из описанного ниже следует, что из первого запроса вытаскивается все описанные поля сode,name,zavod,price,kolvo,srokdo, где имя(название) ui->korzina->item(i,0)->text().trimmed(). И подставляется во второй запрос .arg(q.value(0).toInt())
« Последнее редактирование: Ноябрь 06, 2009, 14:51 от kadr » Записан
Aleksey_Zh
Гость
« Ответ #7 : Ноябрь 06, 2009, 14:57 »

Мне кажется ты просто не вышел на набор данных. Тоесть данные скачиваешь, а выбираешь их неправильно
Записан
MoPDoBoPoT
Гость
« Ответ #8 : Ноябрь 06, 2009, 18:23 »

Aleksey_Zh прав. Ты делаешь запрос, но не перемещаешь "указатель" на данные. После запроса его текущая позиция QSql::BeforeFirstRow. Надо воспользоваться одним из методов для перемещения по записям: next(), first(), last(), seek() (зависит от задачи). В твоем случае можно так:
Код
C++ (Qt)
...
q.exec(SQL);
if (q.next()) { //esli est' dannie, to rabotaem s nimi...
  qDebug() << ui->korzina->item(i,0)->text().trimmed() << "|" <<q.value(0).toInt() <<q.value(1).toString() << q.value(2).toString() << q.value(5).toString();
  ...
}
...
 
А из второго запроса (это который INSERT) ты вообще ничего не сможешь вытащить, так как не используешь  связанные переменные.
В общем, читай документацию, без нее никуда.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.072 секунд. Запросов: 21.