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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как узнать реальную sql-строку?  (Прочитано 6639 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« : Сентябрь 24, 2007, 18:11 »

Сначала код
Код:
QSqlQuery* qsqQuery=new QSqlQuery();
qsqQuery->prepare("INSERT INTO table (ID) VALUE (:ID);")
qsqQuery->bindValue(":ID",iID);
qsqQuery->exec();
QMessageBox::critical(this, "",qsqQuery->lastQuery());
QMessageBox::critical(this, "",qsqQuery->executedQuery());
В первом случае получаю INSERT INTO table (ID) VALUE (:ID);
Во втором - INSERT INTO table (ID) VALUE (?);
Как получить реальную кверю? Т.е. INSERT INTO table (ID) VALUE (10);
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Вячеслав
Гость
« Ответ #1 : Сентябрь 24, 2007, 19:22 »

Реальная вторая Подмигивающий Щаз никто из нормальных серверов параметры в запросе не гогняет(если явно bind указан)
Таки если хош plaintext Qstring(" insert into xxxx values(%1,%2 %3)").arg().arg().arg()
Но забодаешься с ескейпингом строк и даты Грустный
« Последнее редактирование: Сентябрь 24, 2007, 19:25 от Вячеслав » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Сентябрь 24, 2007, 20:03 »

Млин. У меня просто что-то глючит и запросом, а что не просеку никак. В птице пытаюсь добавить строку, где первое поле через генератор, а он не срабатывает и строка добавляется с нулевым номером, при втором добавлении орёт что такой номер уже есть.
Ну, всё равно спасибо.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Вячеслав
Гость
« Ответ #3 : Сентябрь 24, 2007, 20:15 »

Млин. У меня просто что-то глючит и запросом, а что не просеку никак. В птице пытаюсь добавить строку, где первое поле через генератор, а он не срабатывает и строка добавляется с нулевым номером, при втором добавлении орёт что такой номер уже есть.
Ну, всё равно спасибо.

1) Для птица есть чудная конструкция insert returning .... Но в qt она не работает Грустный
2) как добавляешь - код покажи
3) Вариант тригер на поле повесить ? Это чтоб нула небыло ?
4) SP сгородить ? Ы ?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Сентябрь 24, 2007, 20:22 »

2. Код очень большой и не красивый. Завтра почишю и выложу.
4. А что это?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Tonal
Гость
« Ответ #5 : Сентябрь 24, 2007, 20:41 »

SP - Сохранённая процедура
Процедура на сервере, которая вставит запись и вернёт тебе ID.
IBExpert умеет такие генерить по таблице.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Сентябрь 26, 2007, 11:33 »

Разобрался. Просто я указывал генератор в bindValue, а так, наверное, нельзя делать. Прописал генератор наглухо в запросе и все пошло.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Вячеслав
Гость
« Ответ #7 : Сентябрь 26, 2007, 12:58 »

Разобрался. Просто я указывал генератор в bindValue, а так, наверное, нельзя делать. Прописал генератор наглухо в запросе и все пошло.
IHMO лучшее его(генератор) из тригера звать Подмигивающий А явно Id в запросе указывать для разных специальных вещей Подмигивающий Y
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Сентябрь 26, 2007, 18:12 »

Можно пример как правильно делать?
И еще вопрос:
Есть таблица с блоб полем (которое я выставил как text), база создана с настройкой на ютф8. Как правильно записать в блоб поле QStringList? Сейчас делал так:
qsqQuery->bindValue(":textpole",qsqList->join("\n")); - записывается не в ютф кодировке
qsqQuery->bindValue(":textpole",qsqList->join("\n").toUtf8()); - при считывании приходится извращаться с fromUtf8().
Так и нужно или я неверно подхожу?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Tonal
Гость
« Ответ #9 : Сентябрь 26, 2007, 19:43 »

Код:
CREATE TRIGGER DOC_STATUS_BI FOR DOC_STATUS
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.ID is null) then
    new.ID = gen_id(GEN_DOC_STATUS_ID, 1);
end
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #10 : Сентябрь 27, 2007, 11:38 »

Охренеть... Как много я еще не знаю. Грустный
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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