QT之数据库操作
2011-09-07 22:50
357 查看
缘由
对于Qt的学习我目前了解到的是界面,多线程,网络,数据库操作,文件操作。都是一些基本的,但是必不可少的原子操作。再复杂的更能也是由这些一点一滴的累积起来的。所以这里就给大家介绍下Qt数据库编程。
我这里介绍两种数据库,MySQL,SQLite3,最常用的数据库。
首先要安装数据库,我之前的博客中有介绍,这里就不赘述了。
源码(经验证)
SQLite3QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("./memory.xdb"); db.open(); cout << "Let's begin......\n"; QSqlQuery query; query.exec("create table person (id int primary key, " "firstname varchar(20), lastname varchar(20))"); query.exec("insert into person values(101, 'Danny', 'Young')"); query.exec("insert into person values(102, 'Christine', 'Holand')"); query.exec("insert into person values(103, 'Lars', 'Gordon')"); query.exec("insert into person values(104, 'Roberto', 'Robitaille')"); query.exec("insert into person values(105, 'Maria', 'Papadopoulos')"); query.exec("create table offices (id int primary key," "imagefile int," "location varchar(20)," "country varchar(20)," "description varchar(100))"); query.exec("insert into offices " "values(0, 0, 'Oslo', 'Norway'," "'Oslo is home to more than 500 000 citizens and has a " "lot to offer.It has been called \"The city with the big " "heart\" and this is a nickname we are happy to live up to.')"); query.exec("insert into offices " "values(1, 1, 'Brisbane', 'Australia'," "'Brisbane is the capital of Queensland, the Sunshine State, " "where it is beautiful one day, perfect the next. " "Brisbane is Australia''s 3rd largest city, being home " "to almost 2 million people.')"); query.exec("insert into offices " "values(2, 2, 'Redwood City', 'US'," "'You find Redwood City in the heart of the Bay Area " "just north of Silicon Valley. The largest nearby city is " "San Jose which is the third largest city in California " "and the 10th largest in the US.')"); query.exec("insert into offices " "values(3, 3, 'Berlin', 'Germany'," "'Berlin, the capital of Germany is dynamic, cosmopolitan " "and creative, allowing for every kind of lifestyle. " "East meets West in the metropolis at the heart of a " "changing Europe.')"); query.exec("insert into offices " "values(4, 4, 'Munich', 'Germany'," "'Several technology companies are represented in Munich, " "and the city is often called the \"Bavarian Silicon Valley\". " "The exciting city is also filled with culture, " "art and music. ')"); query.exec("insert into offices " "values(5, 5, 'Beijing', 'China'," "'Beijing as a capital city has more than 3000 years of " "history. Today the city counts 12 million citizens, and " "is the political, economic and cultural centre of China.')"); query.exec("create table images (locationid int, file varchar(20))"); query.exec("insert into images values(0, 'images/oslo.png')"); query.exec("insert into images values(1, 'images/brisbane.png')"); query.exec("insert into images values(2, 'images/redwood.png')"); query.exec("insert into images values(3, 'images/berlin.png')"); query.exec("insert into images values(4, 'images/munich.png')"); query.exec("insert into images values(5, 'images/beijing.png')"); query.exec("select * from offices"); while (query.next()) { int id = query.value(0).toInt(); int imagefile = query.value(1).toInt(); QString location = query.value(2).toString(); QString country = query.value(3).toString(); QString description = query.value(4).toString(); qDebug() << "id = " <<id<<"\n" << "imagefile = "<< imagefile <<"\n" << "location = " <<location <<"\n" << "country = " << country <<"\n" << "description : " << description <<"\n"; } db.close();
MySQL.
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("test"); db.setUserName("root"); db.setPassword("ubuntu"); qDebug() << QSqlDatabase::drivers();//查询数据库驱动 bool succ = db.open(); if (succ) { qDebug("yes\n"); db.exec("SET NAMES ’UTF8’"); QSqlQuery query; query.exec("select * from teacher"); while (query.next()) { int id = query.value(0).toInt(); QString name = query.value(1).toString(); //QString address = ANSITOUTF8(query.value(2).toByteArray()); QString address=query.value(2).toString(); QString date = query.value(3).toString(); qDebug() << "id = " <<id<<"\n" << "name = "<< name <<"\n" << "address = " <<address <<"\n" << "date = " << date <<"\n"; } ; db.close(); cout << "\nOK.\n"; } else { qDebug("No"); QMessageBox::critical(0,QObject::tr("Error"),db.lastError().text()); } db.close();
总结:
关于数据库的操作,我就介绍到这里了,不管其他的东西,只是这些简单的数据库操作,掌握后需要了解的就不仅仅是数据库的操作了,是Model/View数据模型的模式了。这个是比较重要的。什么柱状图之类的,都要好好研究,这些好像就是Qt的设计模式了,我比较愚笨,只能了解,深入的知识也没有好好的深入讨论。相关文章推荐
- Qt 学习之路 2(55):数据库操作
- Qt之操作数据库(SQLite)
- Qt数据库 QSqlQueryModel实例操作 上下篇
- QT 数据库操作(创建,插入。。)
- Qt之操作数据库(SQLite)
- Qt之操作数据库(SQLite)
- Qt 数据库操作
- Qt 多线程与数据库操作需要注意的几点问题
- Qt5之数据库操作笔记(一)
- QT学习之路六(qt的数据库操作)
- QT 操作SQLITE3 数据库
- Qt数据库操作(qt-win-commercial-src-4.3.1,VC6,Oracle,SQL Server)
- 【江湖救急】在Linux下Qt上使用libzdb封装的数据库连接池,操作数据库时间错误
- QT Orcle数据库操作
- Qt之操作数据库(SQLite)
- Qt之操作数据库(SQLite)实例
- Qt之操作数据库(SQLite)
- 【Qt笔记】使用模型操作数据库
- Qt 数据库相关操作
- Qt操作数据库概述