Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QT/SQLITE-数据库上的奇怪符号?_C++_Qt_Sqlite - Fatal编程技术网

C++ QT/SQLITE-数据库上的奇怪符号?

C++ QT/SQLITE-数据库上的奇怪符号?,c++,qt,sqlite,C++,Qt,Sqlite,我想知道为什么当我使用SQLite管理器查看我的表时,我会得到这样一个奇怪的符号,其中一个框在三个角封装了3个0,而在最后一个角封装了一个3。如果我使用QString,小时数仍然可以像处理整数值一样处理小时数列吗?谢谢 void FirstWindow::on_pushButton_clicked() { FirstWindow conn; QString rowid,Activity,thehours; Activity=ui->lineEdit->tex

我想知道为什么当我使用SQLite管理器查看我的表时,我会得到这样一个奇怪的符号,其中一个框在三个角封装了3个0,而在最后一个角封装了一个3。如果我使用QString,小时数仍然可以像处理整数值一样处理小时数列吗?谢谢

void FirstWindow::on_pushButton_clicked()
{
    FirstWindow conn;

    QString rowid,Activity,thehours;
    Activity=ui->lineEdit->text();
    rowid=3;
    thehours=1;

    conn.connOpen();
    QSqlQuery qry;
    qry.prepare("insert into datatable (row,activity,hours) values('"+rowid+"','"+Activity+"','"+thehours+"')");

    //if this is good
    if(qry.exec())
    {
        this->hide();//hiding current ui
        mainwindow = new MainWindow(this);
        mainwindow->show();


        conn.connClose(); //close after inserting another
    }

首先,您的列是字符串还是整数

我会检查ui->lineEdit->text()是否实际返回了一个数字

其次,为您希望保存/加载的数据(整数、字符串、实数等)设置正确的列类型。这样,QSQLite错误将更有帮助

第三,您应该避免连接字符串来准备sql查询(想象一下rowid是否包含字符!)。最好的方法是调用prepare with sqlite占位符,然后添加值:

QSqlQuery qry;
qry.prepare("insert into datatable (row,activity,hours) values(?, ?, ?");
qry.addBindValue(rowid);
qry.addBindValue(Activity);
qry.addBindValue(thehours);

if(!qry.exec())
{
    qDebug() << qry.lastError();
}
qsqlqueryqry;
q.准备(“插入数据表(行、活动、小时)值(?,?)”;
qry.addBindValue(rowid);
qry.addBindValue(活动);
qry.addBindValue(小时);
如果(!qry.exec())
{

qDebug()首先,列是字符串还是整数

我会检查ui->lineEdit->text()是否实际返回了一个数字

其次,为您希望保存/加载的数据(整数、字符串、实数等)设置正确的列类型。这样,QSQLite错误将更有帮助

第三,您应该避免连接字符串以准备sql查询(假设rowid包含字符!)。最好的方法是使用sqlite占位符调用prepare,然后添加值:

QSqlQuery qry;
qry.prepare("insert into datatable (row,activity,hours) values(?, ?, ?");
qry.addBindValue(rowid);
qry.addBindValue(Activity);
qry.addBindValue(thehours);

if(!qry.exec())
{
    qDebug() << qry.lastError();
}
qsqlqueryqry;
q.准备(“插入数据表(行、活动、小时)值(?,?)”;
qry.addBindValue(rowid);
qry.addBindValue(活动);
qry.addBindValue(小时);
如果(!qry.exec())
{

qDebug()“QString rowid=3;”它是QString还是int?显然,它以包含字符U+0003的字符串结尾。“QString rowid=3;”它是QString还是int?显然,它以包含字符U+0003的字符串结尾。