标准数据库常用基础语句:
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ —like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 desc; asc:升序 desc:降序
总数:select count() from table1;
总数:select count(field1) from table1;
求和:select sum(field1) from table1;
平均:select avg(field1) from table1;
最大:select max(field1) from table1;
最小:select min(field1) from table1;
源代码:
.pro
QT += core gui sql
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
/* debug 和 打印************************************************************************************/
#include
/*数据库相关头文件***********************************************************************************/
#include
#include
#include //数据库记录相关
/*用户的宏定义**********************************************************************************/
#define MYDEBUG qDebug() << "[" <<__FILE__ <<":"<<__FUNCTION__<<":"<<__LINE__ <<"]"
/***********************************************************************************************/
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
int i,j;
//库结构
QString dbname_init; //库名
QStringList table_list_init; //表名
QStringList tb_head_list_init; //表头
/*******************************************************************************************/
QSqlDatabase db; //要打开的库,不存在则创建
QSqlQuery mquery; //库的检索类
QSqlRecord mrecord; //数据记录
QStringList tablelist; //库里的表列表
QStringListIterator *itr; //表名迭代器
QString tableNmaes; //迭代器用的暂存表名
QString tableNmae; //表名
QStringList tb_head_list; //表头
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
MYDEBUG << "start...................................";
this->setFixedSize(800, 600);
//初始化
i = 0; j = 0;
dbname_init = "test.db";
table_list_init.append("admin");
table_list_init.append("staff");
MYDEBUG << table_list_init;
tb_head_list_init.append("ID");
tb_head_list_init.append("Name");
tb_head_list_init.append("Age");
tb_head_list_init.append("Today");
tb_head_list_init.append("SUMT");
MYDEBUG << tb_head_list_init;
tb_head_list.clear();
MYDEBUG << "variable init success..................";
/****************************************************************************/
db = QSqlDatabase::addDatabase("QSQLITE"); //设置库的类型为sqlite
MYDEBUG << "addDatabase success..............";
db.setDatabaseName(dbname_init); //设置要打开的库名,没有则创建
bool ok = db.open()
if (ok) {
MYDEBUG << ok << "db.open success..................";
} else {
MYDEBUG << ok << "db.open fail";
return ;
}
tablelist = db.tables(); //获取数据库中的表
mquery = QSqlQuery(db); //设置要操作的库
if (tablelist.count() == 0) //如果库中没有表,则创建
{
mquery.exec(QString("create table %1(%2, %3, %4);")\
.arg(table_list_init.at(0))\
.arg(tb_head_list_init.at(0))\
.arg(tb_head_list_init.at(1))\
.arg(tb_head_list_init.at(2)));
}
MYDEBUG << "创建了表" << db.tables().count();
itr = new QStringListIterator(tablelist); //迭代器
while (itr->hasNext())
{
i = 0;
tableNmaes = itr->next();
MYDEBUG << tableNmaes;
QString str = "pragma table_info(" + tableNmaes + ")";
QSqlQuery query;
query.prepare(str);
if (query.exec())
{
while (query.next())
{
qDebug() << query.value(0).toString() << query.value(1).toString(); //字段编号 + 表头
tb_head_list.insert(i, query.value(1).toString());
i++;
}
}
MYDEBUG << "db.tables(); >> " <> " << tableNmae; //打印获得的表名
//添加
#if 1
MYDEBUG << "add state is down...................";
#else
if (mquery.exec(QString("insert into %1(%2, %3, %4) values(%5)")\
.arg(tableNmae)\
.arg(tb_head_list.at(0))\
.arg(tb_head_list.at(1))\
.arg(tb_head_list.at(2))\
.arg("5, '小红', 57")))
{
MYDEBUG << "add success";
} else {
MYDEBUG << "add fail";
}
#endif
//删除
#if 1
MYDEBUG << "delete state is down................";
#else
mquery.clear();
if (mquery.exec(QString("delete from %1 where %2;")\
.arg(tableNmae)\
.arg("Name = '小红'"))) //字符串要用单引号
{
MYDEBUG << "delete sucess";
}
else
{
MYDEBUG << "delete fail";
}
#endif
//修改
#if 1
MYDEBUG << "update state is down................";
#else
mquery.clear();
if (mquery.exec(QString("update %1 set %2 where %3;")\
.arg(tableNmae)\
.arg("Name = '张三'")\
.arg("ID = 2"))) // %1:表名 %2:要修改的内容 %3:范围
{
MYDEBUG << "update sucess";
}
else
{
MYDEBUG << "update fail";
}
#endif
//查询
#if 0
MYDEBUG << "select state is down................";
#else
//打印表里数据条数
mquery.clear();
if (mquery.exec(QString("select count() from %1;")\
.arg(tableNmae)))
{
MYDEBUG << "select count success................";
mquery.seek(0);
MYDEBUG << tableNmae + " count:" <
运行结果:
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 6 ] start…
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 15 ] (“admin”, “staff”)
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 22 ] (“ID”, “Name”, “Age”, “Today”, “SUMT”)
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 27 ] variable init success…
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 32 ] addDatabase success…
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 37 ] true db.open success…
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 58 ] 创建了表 1
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 66 ] “admin”
“0” “ID”
“1” “Name”
“2” “Age”
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 81 ] db.tables(); >> (“ID”, “Name”, “Age”)
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 85 ] db.tables(); >> “admin”
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 90 ] add state is down…
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 110 ] delete state is down…
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 130 ] update state is down…
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 159 ] select count success…
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 161 ] “admin count:” 3
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 172 ] select sucess
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 184 ] “have find 3”
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 187 ] (“ID”, “Name”, “Age”)
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 189 ] “2 张三 46”
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 189 ] “3 王五 48”
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 189 ] “1 李四 48”
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 207 ] select sucess
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 217 ] (“ID”, “Name”, “Age”)
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 219 ] “1 李四 48”
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 219 ] “2 张三 46”
[ …\Qsql\mainwindow.cpp : MainWindow::MainWindow : 219 ] “3 王五 48”