Qt+VS tableView显示数据库,并对某条数据库进行操作

环境:VS+ Qt+sqlite3

首先创建一个数据库test.db,建立一张表student

create table student(id integer, name nvarchar(20), age integer)

具体代码:

#include "MyMainWindow.h"
#include 
#include "sqlite3.h"

MyMainWindow::MyMainWindow(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	sqlite3 *db;
	char *zErrMsg = 0;
	int rc;

	rc = sqlite3_open("D:\\database\\test.db", &db);

	if (rc) {
		fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));

	}
	else {
		fprintf(stderr, "Opened database successfully\n");
	}
	char *sql = "create table student(id integer, name nvarchar(20), age integer)";
	
	sqlite3_exec(db, sql, 0, 0, &zErrMsg);

	sql = "insert into \"student\" values(1 ,'hahahaoa', 20 );";
	sqlite3_exec(db, sql, 0, 0, &zErrMsg);
	sql = "insert into \"student\" values(2 ,'dfdhaoa', 21 );";
	sqlite3_exec(db, sql, 0, 0, &zErrMsg);

	sqlite3_close(db);
}

1.利用Qt中的tableView插件显示数据库
2.并且点击某一行可以显示该行为第几行
3.也可以显示某行固定列的内容

实现:首先ui界面拖一个tableView控件
代码:

#include "MyMainWindow.h"
#include 
#include 
#include 
#include "QtSql/qsql.h"
#include "QtSql/QsqlQueryModel"
#include "QDebug"
#include "QModelIndex"

MyMainWindow::MyMainWindow(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	// QsqlDatabase db = QsqlDatabase::addDatabase("QSQLITE");
	QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
	// db.setDatabaseName("test.db");
	db.setDatabaseName("D:\\database\\test.db");
	if (!db.open())
	{
		qDebug() << "mistake"; //错误处理
	}
	static QSqlQueryModel *model = new QSqlQueryModel(ui.tableView);
	model->setQuery(QString("select * from student"));
	//model->setHeaderData(0, Qt::Horizontal, QObject::tr("编号"));
	//model->setHeaderData(1, Qt::Horizontal, QObject::tr("姓名"));
	//model->setHeaderData(2, Qt::Horizontal, QObject::tr("年龄"));
	ui.tableView->setModel(model);
	db.close();

	connect(ui.tableView, SIGNAL(clicked(QModelIndex)), this, SLOT(show_list()));
}


void MyMainWindow::show_list()
{
	//const QModelIndex &index;
	int row = ui.tableView->currentIndex().row();
	qDebug()<model();
	QModelIndex index1 = model->index(row, 1);//选中行第二列的内容
	QVariant data = model->data(index1);
	qDebug() << data.toString();
	// qDebug()<data(index1).toString();
}

Qt+VS tableView显示数据库,并对某条数据库进行操作_第1张图片

你可能感兴趣的:(Qt学习,数据库)