安装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() << "账号不存在";
}
}