通常流程:c++
环境:win7,vs2013,Qt5.6.0(32 bit),qt add in 1.2.5数据库
建立控制台工程,记得勾选SQL模块,若是忘记勾选:VS”Qt”菜单-“Qt Project Settings”-“Qt Modules”-勾选SQL。编程
链接数据库的函数:设计模式
bool createConnection(QString driver, QString dbName)
{
//addDatabase()的第一个参数
//指定了Qt必须使用哪个数据库驱动程序来访问这个数据库
QSqlDatabase db = QSqlDatabase::addDatabase(driver);
//接下来,设置数据库的主机名、数据库名、用户名和密码
//QSQLITE只须要设置名字就好了
db.setDatabaseName(dbName);
//打开这个链接,失败将显示出错信息
if (!db.open())
{
//QtSql 模块中的类大多具备lastError()函数,用于检查最新出现的错误
qDebug() << db.lastError();
return false;
}
return true;
}
若是习惯于使用 SQL 语句,咱们能够选择
QSqlQuery
类;markdown若是只须要使用高层次的数据库接口(不关心 SQL 语法),咱们能够选择
QSqlTableModel
和QSqlRelationalTableModel
。函数—Qt 学习之路 2学习
主函数:spa
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//数据库驱动程序名
QString driver = "QSQLITE";
//数据库名,绝对相对路径均可
QString dbName = "testli.db";
//QString dbName = "D:\\QT\\project\\55_DataBase\\testli1.db";
//链接数据库,链接失败则返回
if (!createConnection(driver, dbName))
{
return 1;
}
//建立QSqlTableModel实例
QSqlTableModel model;
//设置所须要操做的表格
model.setTable("measureRecords");
//获取系统时间
QString time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
//获取一个空的record,可是与数据库表有同样的字段空间?否则插入会失败
//帮助文档:It returns an empty record, having only the field names.
QSqlRecord record = model.record();
//设置各字段键值
record.setValue("measureTime", time);
record.setValue("measureNumber", 12);
record.setValue("length", 32);
record.setValue("width", 32);
record.setValue("height", 32);
record.setValue("volume", 45);
record.setValue("weight", 332);
//插入,-1表明插入到行尾
model.insertRecord(-1, record);
return a.exec();
}
代码在这里。.net
参考:设计
C++ Qt设计模式(豆瓣)第18章为数据库的介绍
C++GUI Qt4编程(豆瓣)第13章为数据库的介绍