QT使用SQLite

安装SQlite

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

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

QT使用SQLite_第1张图片 如果是32位电脑的,则选择win32进行下载。但是tools是一定要下载的,无论是哪一个版本。

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

QT使用SQLite_第2张图片

至此,安装工作完成 

使用SQLite

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

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

QT使用SQLite_第3张图片

 按下回车后

QT使用SQLite_第4张图片

输入sqlite3 test.db

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

QT使用SQLite_第5张图片

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

建表

插入数据

查询数据

 

 删除数据

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

修改数据

打开其他地方的数据库

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

QT使用SQLite_第6张图片

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

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

即可打开成功。

QT使用SQLite

一、QT项目加入SQL模块:

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

QT使用SQLite_第7张图片

 点击QT Project Settings,

QT使用SQLite_第8张图片

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

QT使用SQLite_第9张图片

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

QT使用SQLite_第10张图片

二、代码上添加连接

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,sqlite,c++)