crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> PostgreSql и real
b10t
  опции профиля:
сообщение 6.7.2009, 4:32
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 2.7.2009
Пользователь №: 871

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте.

Столкнулся с такой проблемой: есть таблица в postgresql (v 8.3.4), в ней поле с типом real, при выводе записей, это поле содержит только целую часть числа, дробной нет. Подскажите куда копать.

Спасибо.

Вот код :

#include <QtCore/QCoreApplication>
#include <QtSql>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
    db.setHostName("127.0.0.1");
    db.setDatabaseName("Pilorama");
    db.setUserName("postgres");
    db.setPassword("password");
    bool ok = db.open();

    QSqlQuery *query = new QSqlQuery("SELECT * FROM prihod_spr_dlina");

    while (query->next()) {
    qDebug() << query->value(0).toInt() << "|" << query->value(1).toDouble() << "|" << query->value(2).toBool();

    qDebug() << query->record();
    }

    return 0;
}


Вот результат вывода в консоль :

Цитата
1 | 4 | false
QSqlRecord( 3 )
" 0:" QSqlField("id", int, length: 4, generated: yes, typeID: 23) "1"
" 1:" QSqlField("naimenovanie", double, length: 4, generated: yes, typeID: 700) "4"
" 2:" QSqlField("is_delete", bool, length: 1, generated: yes, typeID: 16) "false"
3 | 6 | false
QSqlRecord( 3 )
" 0:" QSqlField("id", int, length: 4, generated: yes, typeID: 23) "3"
" 1:" QSqlField("naimenovanie", double, length: 4, generated: yes, typeID: 700) "6"
" 2:" QSqlField("is_delete", bool, length: 1, generated: yes, typeID: 16) "false"
2 | 5 | false
QSqlRecord( 3 )
" 0:" QSqlField("id", int, length: 4, generated: yes, typeID: 23) "2"
" 1:" QSqlField("naimenovanie", double, length: 4, generated: yes, typeID: 700) "5"
" 2:" QSqlField("is_delete", bool, length: 1, generated: yes, typeID: 16) "false"


Вот таблица :
CREATE TABLE prihod_spr_dlina
(
  id serial NOT NULL,
  naimenovanie real NOT NULL,
  is_delete boolean DEFAULT false,
  CONSTRAINT "Id_Prihod_Spr_Dlina" PRIMARY KEY (id)
)
WITH (OIDS=FALSE);
ALTER TABLE prihod_spr_dlina OWNER TO postgres;
Причина редактирования: используй тэг code и code=sql
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 6.7.2009, 15:50
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Попробуй в место query->value(1).toDouble написать query->value(1).toFloat

из таблички PSQL типов:
Цитата
real float4 single precision floating-point number
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
b10t
  опции профиля:
сообщение 7.7.2009, 4:30
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 2.7.2009
Пользователь №: 871

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 6.7.2009, 21:50) *
Попробуй в место query->value(1).toDouble написать query->value(1).toFloat

Что то не нашел я такого ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
b10t
  опции профиля:
сообщение 7.7.2009, 6:00
Сообщение #4


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 2.7.2009
Пользователь №: 871

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(b10t @ 7.7.2009, 10:30) *
Цитата(ViGOur @ 6.7.2009, 21:50) *
Попробуй в место query->value(1).toDouble написать query->value(1).toFloat

Что то не нашел я такого ;)


Нашел, попробовал, такой же результат. Ощущение такое что уже с самой базы идут данные такие.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
b10t
  опции профиля:
сообщение 9.7.2009, 3:50
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 2.7.2009
Пользователь №: 871

Спасибо сказали: 0 раз(а)




Репутация:   0  


Решается проблема заменой типа real на numeric.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2024, 15:37