我们先了解一下基本的类:QsqlDatabase 提供数据库的连接操作,QsqlQuery是执行sql语句的类,如:
QsqlQueryquery(db);
.exec("insertintopersonvalues(101,'Danny','Young')");
下面是如何创建一个数据库以及一个数据表。
void myDatabase::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); bool bsuccess = query.exec("create table person (id int primary key," "firstname varchar(20),lastname varchar(20))"); //创建一个表 query.exec("insert into person values(101,'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();