Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
#include <QHBoxLayout>
#include 
<QPushButton>
#include 
<QPlainTextEdit>
#include 
<QVBoxLayout>
#include 
<QTableView>
#include 
<QSqlQueryModel>
#include 
<QSpacerItem>
#include 
<QHeaderView>
#include 
<QMessageBox>
#include 
<QSqlDatabase>
#include 
<QSqlError>
#include 
<QSqlQuery>

static bool createConnection()
{
    QSqlDatabase db 
= QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName(
":memory:");
    db.open();

    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')");
    
return true;
}

SQLBrowser::SQLBrowser(QWidget
* parent):
    QWidget(parent)
{
    createConnection();

    QPushButton
* button = new QPushButton("执行");
    sql 
= new QPlainTextEdit();
    sql
->setPlainText("select * from person");
    table 
= new QTableView();
    table
->setSortingEnabled(true);

    connect(table
->horizontalHeader(),SIGNAL(sectionClicked(int)),this,SLOT(sortByColumn(int)));

    QVBoxLayout
* boxLayout = new QVBoxLayout(this);
    QHBoxLayout
* hLayout = new QHBoxLayout();
    hLayout
->addWidget(sql,3);
    hLayout
->addWidget(button,1);
    boxLayout
->addLayout(hLayout,1);
    boxLayout
->addWidget(table,3);

    connect(button,SIGNAL(clicked()),
this,SLOT(execute()));

    model.
}

void SQLBrowser::execute()
{
    model.setQuery(sql
->toPlainText().trimmed());
    model.setHeaderData(
0,Qt::Horizontal,QObject::tr("ID"));
    model.setHeaderData(
1,Qt::Horizontal,QObject::tr("First name"));
    model.setHeaderData(
2,Qt::Horizontal,QObject::tr("Last name"));
    model.setHeaderData(
3,Qt::Horizontal,QObject::tr("Last name"));
    table
->setModel(&model);
}

void SQLBrowser::sortByColumn(int col)
{
    model.sort(col,Qt::DescendingOrder);
}
posted on 2016-04-15 14:47 ccsdu2009 阅读(315) 评论(1)  编辑 收藏 引用 所属分类: QT编程
Comments
  • # re: Qt笔记:106 - QT 一个简单的数据库查询软件
    linda
    Posted @ 2016-04-15 20:22
    简单的数据库查询软件 Mark  回复  更多评论   

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理