Qt 的sqlite数据库的学习

来源:互联网 发布:python哪本书比较好 编辑:程序博客网 时间:2024/06/05 18:02



我们先了解一下基本的类:QSqlDatabase提供数据库的连接操作,QSqlQuery是执行Sql语句的类,如:

QSqlQueryquery(db);

query.exec("insertintopersonvalues(101,'Danny','Young')");

下面是如何创建一个数据库以及一个数据表。

 

?

voidmyDatabase::createDB()

{

  

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

    <SPAN style="BACKGROUND-COLOR: #ff0000">db.setDatabaseName("music.db");     //创建数据库

</SPAN>    if(!db.open())

    {

        qDebug()<< "database is error";

        //return;

    }

    else

    {

        qDebug()<<"database is ok";

        //return;

    }

    QSqlQuery query(db);

         boolbsuccess =

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

    if(!bsuccess)

    {

        qDebug()<< "table is error";

    }

    else

    {

        qDebug()<<"table is ok";

  

    }

    //query.exec("INSERT INTO persons VALUES ('xue','chao','langfang')");

    //db.close();

  

}

 

当然我们一定要记住这个顺序,先创建数据库,然后再去创建一个表(作为菜鸟的我犯这个错误了),还有一点需要注意的红色标记的那句话,我参考的数籍一般都这样写

db.setDatabaseName(":memory:");

这样就把生成的数据库文件是在内存当中的,在工程文件目录下找不到。

上面使我们创建了一个数据库和一个表,那么我们如何把它呈现在我们的QTableview部件上呢?

   QSqlTableModel *model =new QSqlTableModel;

   model->setTable("person");

   model->setEditStrategy(QSqlTableModel::OnManualSubmit);

   model->select();

   ui->tableView->setModel(model);

   ui->tableView->show();

上面的代码就把数据库中的信息不加筛选的打印到控件上了。

说明: http://pic002.cnblogs.com/images/2012/449039/2012100816514434.jpg


 

0 0
原创粉丝点击