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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: НАРОД!Как мне добавить новую строку в QSqlQueryModel??  (Прочитано 14202 раз)
linuxoid
Гость
« Ответ #15 : Август 24, 2007, 09:27 »

ПОМОГИТЕ с добавлением новой строки с ячейками в QSqlQueryModel с setData и Data пожалуйста!!!
Записан
stealth
Гость
« Ответ #16 : Август 24, 2007, 12:31 »

Делаеш запрос SELECT MAX(id_key) FROM YourTable. Получаеш текущий максимальный id_key. В insertRow используеш это значение добавив 1.

В многопользовательской базе такое не прокатит - возможен такой вариант что два пользователя одновременно будут вносить строки и будут одинаковые id. Лучше использовать возможности самой субд (например, в firebird использую генератор, либо триггер)

c00ker, опиши поподробнее как это сделать? Желательно чтобы прокатывало и на mysql Улыбающийся
Записан
linuxoid
Гость
« Ответ #17 : Август 24, 2007, 13:05 »

ДА-ДА!Как сделать для многопользовательского использования???
Записан
c00ker
Гость
« Ответ #18 : Август 24, 2007, 13:56 »

Если субд поддерживает autoincrement, то наподобии
Код:
CREATE TABLE pk_Table ( f1 ULONG AUTOINCREMENT) PRIMARY KEY (  f1 )
и делать ничего не придется, база данных сама сгенерирует уникальный id
Записан
stealth
Гость
« Ответ #19 : Август 24, 2007, 14:52 »

Если субд поддерживает autoincrement, то наподобии
Код:
CREATE TABLE pk_Table ( f1 ULONG AUTOINCREMENT) PRIMARY KEY (  f1 )
и делать ничего не придется, база данных сама сгенерирует уникальный id
с автоинкриментом понятно всё, а как же быть, если запись вставляется одновременно двумя пользователями и нужно точно знать какой id будет у неё, ведь опять же возможно, что будут получены неверные id.

пример нормальной работы в хронологическом порядке:
1)INSERT ...   - пользователь Вася
2)MAX(id)...   - пользователь Вася
3)INSERT...  - пользователь Петя
4)MAX(id)...  - пользователь Петя

а ведь возможно такое
1)INSERT ...   - пользователь Вася
2)INSERT...  - пользователь Петя
3)MAX(id)...   - пользователь Вася
4)MAX(id)...  - пользователь Петя

как с этим бороться? транзакции???
Записан
WW
Гость
« Ответ #20 : Август 24, 2007, 15:06 »

что-то вы намудрили... Непонимающий
Код:
QVariant QSqlQuery::lastInsertId () const 
и не надо никаких MAX(ID)... при условии что ключевые поля автоинкрементные
Записан
linuxoid
Гость
« Ответ #21 : Август 28, 2007, 11:16 »

Люди помогите плз!Чё то не добавляет и ошибок не выдаёт!
QSqlQuery query;
QVariant last = query.lastInsertId().toInt() + 1;
   query.prepare("INSERT INTO sales (id_key, s_key, t_key, kol_vo,  dat) "
                             "VALUES (:id_key, :s_key, :t_key, :kol_vo, :dat)");
   query.bindValue(":id_key",last);
    query.bindValue(":skey", 0);
    query.bindValue(":t_key", 0 );
    query.bindValue(":kol_vo", 0);
    query.bindValue(":dat", 0);
    query.exec();
if(!query.exec()){
   QMessageBox::critical(0,"",query.lastError().text());
      }

Чё я делаю не правильно??
« Последнее редактирование: Август 28, 2007, 11:18 от linuxoid » Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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