查看下列程序问题#include "database.h" #include <QSqlQuery> #include <QVariant> Database::Database(QObject *parent):QObject(parent) { db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("./database/user.db"); db.open(); db.exec("create table if not exists Person(ID integer primary key autoincrement, name varchar(30), pwd varchar(30))"); } Database::~Database() { db.close(); } bool Database::open() { int ret = db.open(); if(ret) return true; else return false; } void Database::close() { db.close(); } void Database::creat() { QSqlQuery query; } int Database::no_res(char* sql) { QSqlQuery query; int ret = query.exec(sql); return ret; } int Database::getres(char* sql) { QSqlQuery query; query.exec(sql); while(query.next()) { int ret = query.value(0).toInt(); return ret; } }
时间: 2024-01-21 08:03:56 浏览: 117
QT_database.rar_QT_QT database_Qt数据库_qt 数据库操作
这段程序中存在一些问题:
1. 函数creat()没有现任何功能,可以考虑删除。
2. 函数no_res()和getres()中的char*类型的参数不够安全,建议改为QString类型。
3. 函数getres()可能存在问题,因为只返回了查询结果集中的第一行第一列数据,如果结果集中有多行数据,其他行数据将会被忽略。可以考虑修改为返回查询结果集中所有数据的列表或数组。
4. 在函数open()中,如果数据库打开失败,应该输出错误信息以便进行调试。
5. 在函数getres()中,如果查询结果集为空,没有返回值,可以考虑添加一个默认返回值,如-1或0。
6. 在析构函数中,应该先判断数据库是否已经关闭,如果未关闭才进行关闭操作。
阅读全文