QtSql模块提供了与平台以及数据库种类无关的访问SQL数据库的接口,这个接口由利用Qt的模型视图结构将数据库与用户界面集成的一套类来支持。QSqlDatabase对象象征了数据库的关联。Qt使用驱动程序与各种数据库的应用编程接口进行通信。Qt的桌面版(Desktop Edition)包括如下一些驱动程序:
代码如下:[cpp]view plaincopy print? //添加数据库驱动、设置数据库名称、数据库登录用户名、密码QSqlDatabasedatabase=QSqlDatabase::addDatabase("QSQLITE");database.setDatabaseName("database.db");database.setUserName("root");database.setPassword("123456");
//添加数据库驱动、设置数据库名称、数据库登录用户名、密码QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE"); database.setDatabaseName("database.db");database.setUserName("root"); database.setPassword("123456");
SQLite数据库的打开、增、删、改和查询:[cpp]view plaincopy print? if(!database.open()){qDebug()<<database.lastError();qFatal("failedtoconnect.");}else{//QSqlQuery类提供执行和操作的SQL语句的方法。//可以用来执行DML(数据操作语言)语句,如SELECT、INSERT、UPDATE、DELETE,//以及DDL(数据定义语言)语句,例如CREATETABLE。//也可以用来执行那些不是标准的SQL的数据库特定的命令。QSqlQuerysql_query;QStringcreate_sql="createtablestudent(idintprimarykey,namevarchar(30),ageint)";QStringselect_max_sql="selectmax(id)fromstudent";QStringinsert_sql="insertintostudentvalues(?,?,?)";QStringupdate_sql="updatestudentsetname=:namewhereid=:id";QStringselect_sql="selectid,namefromstudent";QStringselect_all_sql="select*fromstudent";QStringdelete_sql="deletefromstudentwhereid=?";QStringclear_sql="deletefromstudent";sql_query.prepare(create_sql);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"tablecreated!";}//查询最大idintmax_id=0;sql_query.prepare(select_max_sql);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{while(sql_query.next()){max_id=sql_query.value(0).toInt();qDebug()<<QString("maxid:%1").arg(max_id);}}//插入数据sql_query.prepare(insert_sql);sql_query.addBindValue(max_id+1);sql_query.addBindValue("name");sql_query.addBindValue(25);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"inserted!";}//更新数据sql_query.prepare(update_sql);sql_query.bindValue(":name","Qt");sql_query.bindValue(":id",1);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"updated!";}//查询部分数据if(!sql_query.exec(select_sql)){qDebug()<<sql_query.lastError();}else{while(sql_query.next()){intid=sql_query.value("id").toInt();QStringname=sql_query.value("name").toString();qDebug()<<QString("id:%1name:%2").arg(id).arg(name);}}//查询所有数据sql_query.prepare(select_all_sql);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{while(sql_query.next()){intid=sql_query.value(0).toInt();QStringname=sql_query.value(1).toString();intage=sql_query.value(2).toInt();qDebug()<<QString("id:%1name:%2age:%3").arg(id).arg(name).arg(age);}}//删除数据sql_query.prepare(delete_sql);sql_query.addBindValue(max_id);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"deleted!";}//清空表sql_query.prepare(clear_sql);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"cleared";}}//关闭数据库database.close();//删除数据库QFile::remove("database.db");
if(!database.open()){ qDebug()<<database.lastError();qFatal("failed to connect.") ;}else{//QSqlQuery类提供执行和操作的SQL语句的方法。//可以用来执行DML(数据操作语言)语句,如SELECT、INSERT、UPDATE、DELETE, //以及DDL(数据定义语言)语句,例如CREATE TABLE。//也可以用来执行那些不是标准的SQL的数据库特定的命令。QSqlQuery sql_query; QString create_sql = "create table student (id int primary key, name varchar(30), age int)";QString select_max_sql = "select max(id) from student";QString insert_sql = "insert into student values (?, ?, ?)";QString update_sql = "update student set name = :name where id = :id";QString select_sql = "select id, name from student";QString select_all_sql = "select * from student";QString delete_sql = "delete from student where id = ?";QString clear_sql = "delete from student";sql_query.prepare(create_sql);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"table created!";}//查询最大idint max_id = 0;sql_query.prepare(select_max_sql);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{while(sql_query.next()){max_id = sql_query.value(0).toInt();qDebug()<<QString("max id:%1").arg(max_id);}}//插入数据sql_query.prepare(insert_sql);sql_query.addBindValue(max_id+1);sql_query.addBindValue("name");sql_query.addBindValue(25);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"inserted!";}//更新数据sql_query.prepare(update_sql);sql_query.bindValue(":name", "Qt");sql_query.bindValue(":id", 1);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"updated!";}//查询部分数据if(!sql_query.exec(select_sql)){qDebug()<<sql_query.lastError();}else{while(sql_query.next()){int id = sql_query.value("id").toInt();QString name = sql_query.value("name").toString();qDebug()<<QString("id:%1 name:%2").arg(id).arg(name);}}//查询所有数据sql_query.prepare(select_all_sql);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{while(sql_query.next()){int id = sql_query.value(0).toInt();QString name = sql_query.value(1).toString();int age = sql_query.value(2).toInt();qDebug()<<QString("id:%1 name:%2 age:%3").arg(id).arg(name).arg(age);}}//删除数据sql_query.prepare(delete_sql);sql_query.addBindValue(max_id);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"deleted!";}//清空表sql_query.prepare(clear_sql);if(!sql_query.exec()){qDebug()<<sql_query.lastError();}else{qDebug()<<"cleared";}}//关闭数据库database.close();//删除数据库QFile::remove("database.db");
可以通过一些工具对SQLite进行管理,如下:
SQLite的管理管理工具挺多的,这里简单介绍几款: SQLite Manager:开放源代码的SQLite管理工具,用来管理本地电脑上的SQLite数据库,可以独立运行(以XULRunner方式),也可以作为Firefox、Thunderbird、Seamonkey、Songbird、Komodo、Gecko等的插件。SQLite Administrator:一个用来管理SQLite数据库文件的图形化工具,可进行创建、设计和管理操作。提供代码编辑器具有自动完成和语法着色,支持中文,适合初学者。SQLite Database browser:一个SQLite数据库的轻量级GUI客户端,基于Qt库开发,界面清洁,操作简单,主要是为非技术用户创建、修改和编辑SQLite数据库的工具,使用向导方式实现。
更多关于SQLite的介绍与使用,请参考: Connect to Sqlite and do insert, delete, update and select.全方位认识SQLite(一).全方位认识SQLite(二). /qinpanke/article/details/51038739