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

QT之数据库操作

2011-09-07 22:50 357 查看

缘由

对于Qt的学习我目前了解到的是界面,多线程,网络,数据库操作,文件操作。都是一些基本的,但是必不可少的原子操作。再复杂的更能也是由这些一点一滴的累积起来的。

所以这里就给大家介绍下Qt数据库编程。

我这里介绍两种数据库,MySQL,SQLite3,最常用的数据库。

首先要安装数据库,我之前的博客中有介绍,这里就不赘述了。

源码(经验证)

SQLite3

QSqlDatabase 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的设计模式了,我比较愚笨,只能了解,深入的知识也没有好好的深入讨论。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: