Название: не та кодировка Отправлено: 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) находиться в данный момент? Название: Re: не та кодировка Отправлено: Aleksey_Zh от Ноябрь 06, 2009, 14:09 Привет! Убери последнюю запятую перед from
Название: Re: не та кодировка Отправлено: Aleksey_Zh от Ноябрь 06, 2009, 14:15 А вообще для проверки запросов вместе с Qt идет полезная дёмка - SQL brouser называется. Вставляй в нее запрос но с готовыми данными. А свои данные всегда в правильный запрос у себя в программе подставишь
Название: Re: не та кодировка Отправлено: kadr от Ноябрь 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 "" "" "" Выводит только то что у меня в таблице, а из запроса ничего не выводит! Название: Re: не та кодировка Отправлено: Aleksey_Zh от Ноябрь 06, 2009, 14:28 У тебя тут 2 запроса. Не выводит по какому именно?
Название: Re: не та кодировка Отправлено: Aleksey_Zh от Ноябрь 06, 2009, 14:39 Кстати, ты не пробовал выбирать начальное там, может быть следующее значение из полученного набора данных?
Название: Re: не та кодировка Отправлено: kadr от Ноябрь 06, 2009, 14:49 У тебя тут 2 запроса. Не выводит по какому именно? Из описанного ниже следует, что из первого запроса вытаскивается все описанные поля сode,name,zavod,price,kolvo,srokdo, где имя(название) ui->korzina->item(i,0)->text().trimmed(). И подставляется во второй запрос .arg(q.value(0).toInt())Название: Re: не та кодировка Отправлено: Aleksey_Zh от Ноябрь 06, 2009, 14:57 Мне кажется ты просто не вышел на набор данных. Тоесть данные скачиваешь, а выбираешь их неправильно
Название: Re: не та кодировка Отправлено: MoPDoBoPoT от Ноябрь 06, 2009, 18:23 Aleksey_Zh прав. Ты делаешь запрос, но не перемещаешь "указатель" на данные. После запроса его текущая позиция QSql::BeforeFirstRow. Надо воспользоваться одним из методов для перемещения по записям: next(), first(), last(), seek() (зависит от задачи). В твоем случае можно так:
Код А из второго запроса (это который INSERT) ты вообще ничего не сможешь вытащить, так как не используешь связанные переменные. В общем, читай документацию, без нее никуда. |