基本语句
注意:命令不区分大小写 比如insert和INSERT是一样的
·创建表
create table tab_test(date int , time int, contents varchar(20))
·增
insert into tab_test(date,time, contents) values (1,2,“test”)
·删
delete from tab_test where date>10
·改
update tab_test set date= 1 where time=2
·查
select date from tab_test where time=10
代码示例
QSqlQuery query;
QSqlDatabase sql_test;
//1.检查链接是否存在
if(QSqlDatabase::contains("qsqlite_test"))
//qsqlite_test是定义的连接名 不填将使用默认连接名
sql_test = QSqlDatabase::database("QSQLITE","qsqlite_test");
else
sql_test = QSqlDatabase::addDatabase("QSQLITE","qsqlite_test");
//2.根据日期命名数据库
QString str_dbname = QDate::currentDate().toString("yyyyMMdd");
str_dbname += ".db";
//3.打开数据库 如果不存在则创建新的
if(sql_test.databaseName() != str_dbname)
{
sql_test.setDatabaseName(str_dbname);
if(!sql_test.open())
qDebug("db open failed ");
else
qDebug("db open ok ");
}
query = QSqlQuery(sql_test);
if(sql_test.isOpen())
{
QStringList tablelist = sql_test.tables();
if(!tablelist.contains("tab_test"))
{
qDebug("tab_test not contains");
//4.表不存在 创建表
query.exec("create table tab_test(date int ,time int, contents varchar(20))");
}
//定义3个变量 一会插入数据库
int d=123;
int t=456;
float c=7.89;
//5.插入一条数据
query.exec(QString("insert into tab_test (date, time, contents) values (%1, %2, '%3')").arg(d).arg(t).arg(c));
//6.修改数据内容
c=2.0;
query.exec(QString("update tab_test set contents='%1' where date=123").arg(c));
//7.查询数据库内容
query.exec(QString("select time from tab_test where date=123"));
query.next();//将上面查询语句的结果放到最前面
int t_read = query.value(0).toInt();//将查询到的数据转成int
qDebug("read from sql t_read=%d",t_read);
//8.删除数据库内容
query.exec(QString("delete from tab_test where date=123"));
}
上面代码调试结果如下图
运行到第4步 创建表
运行到第5步 插入一条数据
运行到第6步 修改7.89为2.0
运行到第7步 查询表 查询结果保存到变量 并打印
运行到第8步 删除内容 删除后表为空 如图1
小节
1.筛选条件不唯一的时候 可以用关键字 and来连接多个条件:
query.exec(QString(“select time from tab_test where date>0 and date <10”));
2.当不确定要保存的内容时什么类型,比如可能是int 也可能是float 那么创建表的时候,不确定的字段可以设类型为varchar(20),20是字符大小