QT使用SQLite

本文详细介绍了如何在Windows环境下安装SQLite数据库,包括下载、解压和环境变量配置。同时,讲解了如何在命令行中操作SQLite,如创建、插入、查询和删除数据。接着,文章阐述了在QT项目中集成SQLite的步骤,包括QT模块的添加和数据库操作的代码示例,涉及登录验证、用户管理等业务处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装SQlite

官网下载地址:https://www.sqlite.org/download.html

如果是64位电脑的,就如下图所示:

 如果是32位电脑的,则选择win32进行下载。但是tools是一定要下载的,无论是哪一个版本。

解压完成后,将全部文件放在同一个文件夹

至此,安装工作完成 

使用SQLite

如果你想通过cmd命令行窗口快速使用SQLite数据库,你也可以进行环境变量配置。

但是你也可以直接在该文件夹的目录的搜索框下输入cmd并且回车,就可以将cmd自动跳转到该目录下。

 按下回车后

输入sqlite3 test.db

该命令行的意思是先在本文件夹中查找数据库test.db,如果不存在,则创建test.db的数据库。 

接下来就是一些数据库的操作

建表

插入数据

查询数据

 

 删除数据

此时select之后没有结果,也就是说删除成功

修改数据

打开其他地方的数据库

例如我要打开Loginnn.db数据库

则先复制该数据库的目录, D:\VS_WorkSpace\5.1haveServer\QTServer\QTServer

然后输入命令,sqlite3 D:\VS_WorkSpace\5.1haveServer\QTServer\QTServer\Loginnn.db

即可打开成功。

QT使用SQLite

一、QT项目加入SQL模块:

右键点击该VS项目,选择QT

 点击QT Project Settings,

在General的属性列中找到QT Modules,

点击下拉框找到Select Moudles并点击,然后勾选 sql 即可。

二、代码上添加连接

QSqlDatabase db;//数据库对象
db = QSqlDatabase::addDatabase("QSQLITE");//引用数据库的驱动字符串,创建数据库
db.setDatabaseName("Loginnn.db");//创建数据库,名为Loginnn.db。该数据库会创建在你的VS项目的根目录中。
QString s = db.connectionName();
db.open();
QSqlQuery sql;//要先有数据库连接才可以创建对象
sql.exec("create table test(no,name)");//创建表
sql.exec("insert into test(no,name) values('1','wmf')");

QString camnum = "wmf";
QString istrue = QString("delete from camera where name = '%1'").arg(camnum);//带参形式使用数据库语言
sql.exec(istrue);

注意事项:1、每一次使用数据库的时候,最好先创建一个QSqlQuery sql 对象,该对象最好不要设置成全局变量,防止使用失败。2、当你的VS项目在一个cpp文件中建立了数据库连接之后,其他的cpp文件不再需要建立连接,直接使用即可。

详细代码

以下是我一个项目中的部分代码,供大家参考

/*********************************登录页面的业务处理**********************************/
if (QString::localeAwareCompare(list[0],"login") == 0)
{
    QString username1 = list[1];
    QString password1 = list[2];
    qDebug() << list[0];
    qDebug() << "账号:" << username1;
    qDebug() << "密码:" << password1;
    QSqlQuery sql; // 数据库对象
    QString istrue = QString("select * from user1 where username = '%1' and password = '%2'").arg(username1).arg(password1);
    sql.exec(istrue);
    if (sql.next() || (username1 == "admin" && password1 == "admin"))
    {
        socket->write("SearchSuccess");
        qDebug() << "查找成功";
    }
    else
    {
        socket->write("SearchFail");
        qDebug() << "查找失败";
    }
}

/*********************************管理员权限页面的业务处理*********************************/
//如果客户端进行添加账号业务
if (QString::localeAwareCompare(list[0], "managerPowerAdd") == 0)
{
    messageClient = list[0];
    QString accound = list[1];
    QString password = list[2];
    qDebug() << messageClient;
                    
    QSqlQuery sql; // 数据库对象
    //第一步、先查重
    istrue = QString("select * from user1 where username = '%1'").arg(accound);
    sql.exec(istrue);
    if (sql.next())
    {
        socket->write("accoundRepeat");//账号重复
        qDebug() << "账号重复";
    }
    else
    {
        //如果数据库没有该账号,则进行添加
        istrue = QString("insert into user1(username,password) values('%1','%2')").arg(accound).arg(password);
        sql.exec(istrue);
        //检查是否插入成功
        istrue = QString("select * from user1 where username = '%1' and password = '%2'").arg(accound).arg(password);
        sql.exec(istrue);
        if (sql.next())
        {
            socket->write("addSuccess");
            qDebug() << "添加成功";
        }
        else
        {
            socket->write("addFail");
            qDebug() << "添加失败";
        }
    }
}

//客户端进行删除账号业务
if (QString::localeAwareCompare(list[0], "managerPowerDelete") == 0)
{
    messageClient = list[0];
    QString accound = list[1];
    QString password = list[2];
    qDebug() << messageClient;
                    
    QSqlQuery sql; // 数据库对象
    //想删除 先查询
    istrue = QString("select * from user1 where username = '%1'").arg(accound);
    sql.exec(istrue);
    if (sql.next())//如果存在
    {
        istrue = QString("delete from user1 where username = '%1'").arg(accound);
        sql.exec(istrue);
        //查看是否删除成功
        istrue = QString("select * from user1 where username = '%1'").arg(accound);
        sql.exec(istrue);
        if (sql.next())
        {
            socket->write("deleteFail");
            qDebug() << "删除失败";
        }
        else
        {
            socket->write("deleteSuccess");
            qDebug() << "删除成功";
        }
    }
    else
    {
        socket->write("delete-accoundNoFound");
        qDebug() << "账号不存在";
    }
}

//客户端进行修改账号密码业务
if (QString::localeAwareCompare(list[0], "managerPowerChange") == 0)
{
	messageClient = list[0];
    QString accound = list[1];
	QString password = list[2];
	qDebug() << messageClient;
                   
    QSqlQuery sql; // 数据库对象
    istrue = QString("select * from user1 where username = '%1'").arg(accound);
    sql.exec(istrue);
    if (sql.next())//如果存在
    {
        istrue = QString("update user1 set password = '%1' where username = '%2'").arg(password).arg(accound);
        sql.exec(istrue);
        //查看是否修改成功
        istrue = QString("select * from user1 where username = '%1' and password = '%2'").arg(accound).arg(password);
        sql.exec(istrue);
        if (sql.next())
        {
            socket->write("changeSuccess");
            qDebug() << "修改成功";
        }
        else
        {
            socket->write("changeFail");
            qDebug() << "修改失败";
        }
    }
    else
    {
        socket->write("change-accoundNoFound");
        qDebug() << "账号不存在";
    }
}

你好!Qt 是一个跨平台的应用程序开发框架,它提供了丰富的工具和组件来简化应用程序的开发过程。使用 Qt 进行 SQLite 数据库的操作非常简单。 首先,确保你的 Qt 项目中已经包含了 SQLite 驱动程序。在项目文件(.pro)中添加以下行: ``` QT += sql ``` 接下来,你需要创建一个数据库连接。可以使用 `QSqlDatabase` 类来实现。以下是一个示例: ```cpp #include <QCoreApplication> #include <QSqlDatabase> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("path/to/your/database.db"); if (!db.open()) { qDebug() << "Failed to connect to database!"; return -1; } // 这里可以进行数据库操作 db.close(); return a.exec(); } ``` 以上代码中,我们创建了一个名为 `db` 的 `QSqlDatabase` 对象,并设置了数据库的驱动程序为 SQLite,并指定了数据库文件的路径。然后我们可以使用 `open()` 方法打开数据库连接,如果连接成功则返回 `true`,否则会返回 `false`。 接下来,你就可以在打开的数据库连接上执行 SQL 查询和操作了。你可以使用 `QSqlQuery` 类来执行查询,并获取结果。以下是一个简单的示例: ```cpp #include <QCoreApplication> #include <QSqlDatabase> #include <QSqlQuery> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("path/to/your/database.db"); if (!db.open()) { qDebug() << "Failed to connect to database!"; return -1; } QSqlQuery query; query.exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)"); // 插入数据 query.prepare("INSERT INTO users (name) VALUES (:name)"); query.bindValue(":name", "John Doe"); query.exec(); // 查询数据 query.exec("SELECT * FROM users"); while (query.next()) { int id = query.value(0).toInt(); QString name = query.value(1).toString(); qDebug() << "ID:" << id << "Name:" << name; } db.close(); return a.exec(); } ``` 以上代码中,我们首先创建了一个名为 `users` 的表,然后插入了一条数据,并执行了一个简单的查询,将结果打印出来。 这只是一个简单的示例,你可以根据自己的需求进行更复杂的数据库操作。希望对你有所帮助!如果有任何问题,请随时向我提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值