注册

QT开发 一直报数据超出范围

DM_559582 2022/04/27 1254 8

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:CENTOS7.3
【CPU】:X64
【问题描述】*:程序插入insert数据时一直报数据超出范围,不知道什么原因,如下
输出信息如下:
[root@PRS7000A test]# ./test
connect ok!
QODBCResult::exec: Unable to execute statement: “数据超出范围”
insert fail! “数据超出范围 QODBC3: Unable to execute statement”

测试代码如下:
#include <QtSql>
#include <QDebug>
#include <QTextCodec>
#include <QCoreApplication>
#include <QList>
#include <QVariant>

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

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("192.168.0.40");
db.setPort(5236);
db.setDatabaseName("DM");
db.setUserName("SYSDBA");
db.setPassword("prs7000.sunri");
if (db.open())
    qDebug() << "connect ok!";
else
{
    qDebug() << "connect fail! " << db.lastError().text().toLatin1();
}

QSqlQuery query(db);

QString strsql0=" DROP table if exists  PRS7000CFG.test";
query.exec(strsql0);

//清空表,初始化测试环境
QString strsql1=" CREATE TABLE PRS7000CFG.test (  ID INT NOT NULL, Value FLOAT DEFAULT 0) STORAGE(ON  MAIN, CLUSTERBTR) ";
query.exec(strsql1);



//插入数据
QString strsql = "INSERT INTO PRS7000CFG.test  (id, Value)  VALUES(?, ?)";

query.prepare(strsql);

QList<QVariant> lstVals;
int id = 0;
float value = 0.0f;

 lstVals.push_back(QVariant(id));
 lstVals.push_back(QVariant(value));

 query.addBindValue(lstVals.at(0));
 query.addBindValue(lstVals.at(1));

if (query.exec())
{
    qDebug() << "insert ok!";
}
else
{
    qDebug() << "insert fail! " << query.lastError().text();
    getchar();
    exit(-1);
}

return a.exec();

}

回答 0
暂无回答
扫一扫
联系客服