mysql qt 列车项目学习笔记
第一步连接数据库 以后修改一下基本通用static bool createConnection(){QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL"); //加载数据库驱动,类似的还有QODBC, QSQLITE.......db.setUserName("root");/
·
第一步连接数据库 以后修改一下基本通用
static bool createConnection()
{
QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL"); //加载数据库驱动,类似的还有QODBC, QSQLITE.......
db.setUserName("root");//用户名
db.setPassword("chen28");//密码 登入服务器的密码一定要正确,否则打不开
db.setHostName("localhost");
db.setDatabaseName("StationHelper");//数据库名 选择想要的数据库
db.setPort(3306);//端口 默认端口
if(!db.open())
{
qDebug()<<"open failed\n"<<db.lastError().driverText()<<"\n";
return false;
}
else
{
qDebug()<<"open database success\n";
}
return true;
}
三种数据库模型数据库模型QSqlQueryModel QSqlTableModel QSqlRelationalTableModel
QSqlQueryModel 查询数据库模型 只读
QSqlTableModel 表格数据库模型 可读写
QSqlRelationalTableModel 关系型表格数据库模型 支持外键
1、表格数据库模型QSqlTableModel
实例:对一个学生数据表格进行 插入删除操作
/*main.cpp*/
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
/*mainwindow.cpp*/
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlDatabase>
#include <QDebug>
#include <QSqlError>
#include <QMessageBox>
#include <QTextCodec>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); //解决中文乱码
QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL");
db.setUserName("root");//用户名
db.setPassword("chen28");//密码
db.setHostName("localhost");
db.setDatabaseName("test");//数据库名
db.setPort(3306);//端口
if(!db.open())
{
qDebug()<<"open failed\n"<<db.lastError().driverText()<<"\n";
}
else
{
qDebug()<<"open database success\n";
}
model = new QSqlTableModel(this); //定义一个表格模型
model->setTable("table1"); //打开表格
model->setEditStrategy(QSqlTableModel::OnManualSubmit); //三种模式之一,见下面解释
model->select(); //选择所以字段
ui->tableView->setModel(model); //ui表格和数据库表格关联
}
MainWindow::~MainWindow()
{
delete ui;
delete model;
}
/*插入按钮槽函数*/
void MainWindow::on_insertButton_clicked()
{
int rowNum = model->rowCount(); //获得表的行数
model->insertRow(rowNum); //添加一行
QModelIndex index= model->index(rowNum,1); //聚焦光标到当前行第1列
model->setData(index,QString("添加")); //在光标处设置默认值
}
/*删除按钮槽函数*/
void MainWindow::on_deleteButton_clicked()
{
QModelIndex index=ui->tableView->currentIndex();
if(!index.isValid())
{
QMessageBox::information(this,QString("提示:"),QString("请选择待删除记录!"));
return ;
}
model->removeRow(index.row()); //删除当前行
}
/*刷新按钮槽函数*/
void MainWindow::on_refreshButton_clicked()
{
model->select(); //刷新,重新选择所有字段
}
/*提交按钮槽函数*/
void MainWindow::on_submitButton_clicked()
{
model->submitAll(); //提交
}



2、关系表格数据库模型QSqlRelationalTableModel
实例
更多推荐


所有评论(0)