您的位置:首页 > 编程语言 > Qt开发

QT学习5:数据库,sqlite相关

2014-07-25 09:43 344 查看
1.qt5已经内带了 QSqlite 驱动 和 sqlite数据库,非常方便,

使用数据库QSqlDatabase类进行数据库相关的编程时,要在.pro里面 += sql

其他的废话不说,上代码 ( 数据库是工程目录下自己创建的一个stock.db文件 )

void MainWindow::initDataBase()

{

QSqlDatabase db;


//创建数据库实例(即创建数据库连接)

//addDatabase() 第一个参数为要装载的驱动,这里使用qt自带的qsqlite

//第二个参数"connectDB_1" 为自定义的数据库连接名,不是数据库名 )

db = QSqlDatabase::addDatabase("QSQLITE", "connectDB_1");


//选择要使用的数据库名字   即工程目录下的stock.db

//因为连接的是本地sqlite数据库,所以  主机,用户名,密码不需要配置

db.setDatabaseName("stock.db");

//    db.setHostName("host");

//    db.setDatabaseName("dbname");

//    db.setUserName("username");

//    db.setPassword("password");




//尝试连接数据库

if (!db.open()) {

outQString("无法打开数据库,错误为:" + db.lastError().text() );

}

else {

outQString("数据库已成功打开");

qDebug()<<"数据库含表:"<< db.tables();  //输出数据库里面的表


//QSL语句,参数里要填入一个数据库实例,而且一定要在 db.open()以后定义,

//之前报了一个out of memory Unable to execute statement 就是因为在db.open()前就定义了

QSqlQuery query( db )  ;


//如果表table_1不存在  则创建

if( ! db.tables().contains("table_1") ) {

bool correct =  query.exec(" create table table_1 ("

" sid  INTEGER PRIMARY KEY AUTOINCREMENT ,"

" scode varchar not null ,"

" sname varchar not null "

")  ");


if(!correct ) outQString("建表语句执行错误:" + query.lastError().text() );

else

outQString("建表table_1 成功");

}

else outQString("表table_1已存在");


}


2.   QSqlQuery query;    一定要在 db.open()以后定义

之前报了一个out of memory Unable to execute statement 就是因为在QSqlDatabase的 db.open()前就定义了

资料参考:

Qt 学习之路 2(55):数据库操作   http://www.devbean.net/2013/06/qt-study-road-2-database/

Qt, QSqlDatabase类详细介绍     http://hi.baidu.com/ageeker/item/40059c0237697ed21ff046f1

最后再暴贴51cto的

详解讲解 Qt SQLite 3入门教程

详解Qt 中如何提高Sqlite读写速度

解决QT 中Sqlite数据库添加加密功能

Qt数据库操作 连接SQLite和MySQL数据库实例

浅谈Qt Sqlite (总结篇)

详解Qt 利用Sqlite静态编译库 (Linux 篇)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: