sudo apt-get install libsqlite3-dev
sudo apt-get install sqlite3
一:首先需要在Qt的工程文件(.pro)中添加QT += sql,导入数据库;
二:判断数据库是否连接、创建数据库
1,QSqlDatabase::contains("systemLogConnect")); //判断你该数据库中是否有该连接,
myDb=QSqlDatabase::database("systemLogConnect"); //得到该数据库,导出存在连接的数据库
2,创建数据
(1):myDb=QSqlDatabase::addDatabase("QSQLITE","systemLogConnect"); //创建系统日志的连接
(2):为数据库设置名称(路径)、用户名(可选项)、密码(可选项)
myDb.setDatabaseName("systemlog.db"); //设置数据库的名称,
实例如下:
QSqlDatabase myDb;//定义一个数据库
//判断系统中是否有该数据库连接,如果有该数据库的话,会默认打开
if(QSqlDatabase::contains("systemLogConnect"))
{
myDb=QSqlDatabase::database("systemLogConnect"); //得到该数据库
qDebug()<"get database="">"get>
}
else //没有该数据库连接,则创建改数据库连接
{
myDb=QSqlDatabase::addDatabase("QSQLITE","systemLogConnect"); //创建系统日志的连接
myDb.setDatabaseName("systemlog.db"); //设置数据库的名称
qDebug()<"create database="">"create>
}
三:打开数据库,使用open方法
myDb.open(); //打开成功返回true,失败返回false;
myDb.close(); //关闭数据库
四:查询数据库中是否有某张表
"select * from sqlite_master where type = 'table' and name = 'systemlog'"; //判断数据库中是否存在该表
sqlite_master是系统中维护的一张表,上例中查询该数据库中是否有systemlog表
五:数据库的操作使用QSqlQuery
QSqlQuery operateMyDb(myDb); //操作数据库,注意必须要设置数据库的名称,很容易失败,特别注意:定义该变量时最好加上数据库的名称(路径最好使用绝对路径,相对路径容易出错),否则数据库可能无法操作
QSqlQuery operateMyDb(myDb); //操作数据库,注意必须要设置数据库的名称,否则和你容易失败
//查询该表是否存在
isHasThisTable="select * from sqlite_master where type = 'table' and name = 'systemlog'"; //判断数据库中是否存在该表
operateMyDb.prepare(isHasThisTable);
operateMyDb.exec();
六:创建一个表(注意如果该表已经创建,则会创建失败,所以必须判断该表是否创建)create table 表名(表头)
//首先打开数据库
if(!myDb.open())
{
qDebug()<"open database="" error!="">"open>
}
else //打开成功
{
//数据库的操作
QSqlQuery operateMyDb(myDb); //操作数据库,注意必须要设置数据库的名称,否则和你容易失败
isHasThisTable="select * from sqlite_master where type = 'table' and name = 'systemlog'"; //判断数据库中是否存在该表
operateMyDb.prepare(isHasThisTable);
if(0)
{//有该表
qDebug()<"this table="">"this>
}
else
{//没有表
//创建一个表 时间和类型
creatTable="create table systemlog(errorDate,errorTime,errorType,errorStatus);";
operateMyDb.prepare(creatTable);
if(operateMyDb.exec())
{
qDebug()<"creat table="">"creat>
}
else
{
qDebug()<"creat table="" failed!="">"creat><>
}
}
}
myDb.close(); //关闭数据库
七:插入数据 insert into systemlog values(表头);
insertData="insert into systemlog values(?,?,\"recycle\",0);"; //插入数据的指令,根据表的内容灵活更改
QSqlQuery operateMyDb(myDb); //操作数据库,注意必须要设置数据库的名称,否则和你容易失败
operateMyDb.prepare(insertData); //准备好数据
operateMyDb.bindValue(0,QDate::currentDate().toString("Mdd").toInt());//绑定对应的数据
operateMyDb.bindValue(1,QTime::currentTime().toString("hh:mm"));
operateMyDb.exec(); //执行插入数据的指令
八:按照某个字段查找数据 select * from table where 字段=值
selectData="select * from systemLog where errorDate="; //根据errorDate字段查找数据
selectData.append(date);
selectData.append(";");
operateMyDb.prepare(selectData); //准备好指令
qDebug()<>
if(!operateMyDb.exec()) //查询数据失败
{
qDebug()<>
}
else
{
while(operateMyDb.next())
{
//打印出查找到的数据内容
qDebug()<><">"><><"="">"=""><><>
}
}
九:删除某个数据 delete from systemLog where 字段=条件
deleteData="delete from systemLog where errorDate<";>";>
deleteData.append(date);
//首先打开数据库
if(!myDb.open())
{
qDebug()<"open database="" error!="">"open>
}
QSqlQuery operateMyDb(myDb); //操作数据库,注意必须要设置数据库的名称,否则和你容易失败
operateMyDb.prepare(deleteData);
operateMyDb.exec();
myDb.close();
十:查找数据库中的数据量
1,查询数据库中所有的表的表头:select * from sqlite_master where type='table' order by name;<">
">
2,查询数据库中的所有数据总量:select count (*) from systemLog; //systemLog需要查询的表名
十:命令行常用操作指令
1,打开数据库:sqlite3 test.db;
2,查看所有表的语句(显示表的字段):select * from sqlite_master;
3,查看某表中的所有数据:select * from table;table指的是某个表
4,删除某个条件的数据:delete from systemLog where 字段=条件
5,查找某个条件的数据:select * from table where 字段=值
6,多条件查询:逻辑运算:and,or,not
7,注意:字符串要加引号"",否则找不到。例如查询字符串的写法:
selectData="select * from systemLog where errorType=\"str\"";
8,比较运算符:
注:数据库的常用操作指令
https://www.jb51.net/article/44545.htm
参考教程:http://www.runoob.com/sqlite/sqlite-tutorial.html
参考:https://blog.csdn.net/wpb74521wrf/article/details/80466929
联系客服