db.setDatabaseName("数据库名字.db");
if(db.open())
qDebug() << "database open success" << endl;
QSqlQuery q(db);
QString Str = "CREATE TABLE PEOPLE \
( \
Name char(10) NOT NULL , \
ID char(50) NOT NULL , \
Phone char(50) NULL , \
City char(50) NULL , \
Email char(5) NULL \
);";
if(q.exec(Str))
qDebug() << "Create ok" << endl;
else
qDebug() << "Create fail: " << q.lastError();
QSqlQuery q(db);
const char* format = "insert into PEOPLE values('name%d', '123%d', '101010%d', 'City%02d', '1111%d@email')";
QString str = "";
for(int i = 0; i < 10; i++)
{
str = "";
str.sprintf(format, i, i, i, i, i);
if(q.exec(str))
qDebug() << "insert ok" << endl;
else {
qDebug() << "insert fail" << endl;
}
}
QSqlQuery q(db);
if(q.exec("Select 要查询的字段名 From 表名"))
qDebug() << "select ok";
else {
qDebug() << "select fail";
}
while(q.next())
{
qDebug() << q.value(0).toString();
}
用代码:
QSqlRelationalTableModel* model = new QSqlRelationalTableModel(this, db);
model->setTable("PEOPLE");
model->select();
QTableView* view = new QTableView(this);
view->resize(600, 200);
view->setModel(model);
model->setEditStrategy(QSqlTableModel::OnFieldChange);
#ifndef MYMODEL_H
#define MYMODEL_H
#include
#include
#include
class MyModel : public QSqlRelationalTableModel
{
Q_OBJECT
public:
explicit MyModel(QSqlDatabase db, QObject *parent = nullptr);
void selectSome();
private:
QSqlDatabase m_db;
};
#endif // MYMODEL_H
#include "mymodel.h"
#include
MyModel::MyModel(QSqlDatabase db, QObject *parent)
: QSqlRelationalTableModel(parent, db), m_db(db)
{
}
void MyModel::selectSome()
{
QSqlQuery qs("SELECT Name, ID FROM PEOPLE", m_db);
setQuery(qs);
}
MyModel* model = new MyModel(db, this);
model->setTable("PEOPLE");
model->selectSome();
QTableView* view = new QTableView(this);
view->resize(600, 200);
view->setModel(model);
model->setHeaderData(0, Qt::Horizontal, tr("NewHeader"));//修改第0列的表头
view->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//表格宽度随着tableview的变化而变化
model->setFilter("Phone");//存在某个字段的记录