创建基本链接以及基本的单表查询
//指定一个数据库文件的路径,就相当于新建一个文件夹,里面去存放东西
//db.setDatabaseName("user.db");
// qDebug()<<"connected"<<db.open();
// QSqlQuery query(db);//创建事物
// //QString strCreateTable="create table student (id integer primary key autoincrement,username ntext unique not NULL,password ntext not NULL)";
// QString strCreateTable="create table student1 (id int primary key , name varchar(30), age int)";
// if(!query.exec(strCreateTable)) //不管干什么 之前都需要执行query.exec();
// {
// qDebug()<<"创建失败";
// }
// //插入数据
// // QString stInsertData = "insert into student values (?, ?, ?)";
// QString stInsertData = "insert into student1 values (?, ?, ?)";
// query.prepare(stInsertData);
// query.addBindValue(1);
// query.addBindValue("test_name");
// query.addBindValue(18);
// if(!query.exec())
// {
// qDebug()<<"插入失败";
// }
// //删除数据
// QString stDeleteData = "delete from student where id=1";
// query.prepare(stDeleteData);
// if(!query.exec())
// {
// qDebug()<<"删除失败";
// }
// //更新数据
// QString strUpdateData = "update student set name = :name where id = :id";
// query.prepare(strUpdateData);
// query.bindValue(":name", "myName");
// query.bindValue(":id", 1);
// if(!query.exec())
// {
// qDebug()<<"更新失败";
// }
// //查询数据
// QString strSelectData = "select * from student ";
// query.prepare(strSelectData);
// if(!query.exec())
// {
// qDebug()<<"查询失败";
// }
// else
// {
// while(query.next())
// {
// qDebug() << query.value(0).toInt() << query.value(1).toString() << query.value(2).toInt();
// }
// }
通过查询出来的行和列展示一个表
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QApplication>
#include<QSqlDatabase>
#include<QSqlQuery>
#include<QSqlRecord>
#include<QDebug>
#include<QSqlQueryModel>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
qDebug()<<QSqlDatabase::drivers();
//加载数据库驱动
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
//连接数据库
db.setHostName("localhost");//设置数据库主机ip连接数据库主机名 127.0.0.1
db.setDatabaseName("teststudy");//设置数据库名
db.setPort(3306);//设置端口
db.setUserName("root");//设置用户名
db.setPassword("123456");//设置用户密码
qDebug()<<"connected"<<db.open();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_FindDataa_clicked()
{
QSqlQuery query1;
int row =0;
int columns = 3;
//初始化行数
QString sqlrow = QString("select count(*) as R from student");
query1.exec(sqlrow);
if(query1.first())
{
row = query1.value("R").toInt();
ui->tableWidget->setRowCount(row);
qDebug()<<"执行SQL成功";
}
// QString sqlcolumns= QString("SELECT COUNT(*) FROM information_schema. COLUMNS WHERE table_name = 'student'");//查询所有列数
query1.exec("SELECT * FROM student");
QSqlRecord rec = query1.record();//获取列数
columns=rec.count();
ui->tableWidget->setColumnCount(columns);//列
//初始化列数(mysql中存在一个information_schema这个数据库,存放各个表的信息)
ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"id"<<"name"<<"age"); //设置行头
QString sql1 = QString("select * from student");
//QSqlQuery query1(sql1);//自动执行
query1.exec(sql1);
for(int i =0;query1.next();i++)
{
QString id = query1.value(0).toString();
QString name = query1.value(1).toString();
QString age = query1.value(2).toString();
qDebug()<<"age"<<age;
ui->tableWidget->setItem(i,0,new QTableWidgetItem(id)); //设置表格内容 第i行第1列
ui->tableWidget->setItem(i,1,new QTableWidgetItem(name)); //设置表格内容 第i行第2列
ui->tableWidget->setItem(i,2,new QTableWidgetItem(age));//设置表格内容 第i行第3列
}
// static QSqlQueryModel *mode= new QSqlQueryModel(ui->tableView);
// mode->setQuery("select * from user");
// mode->setHeaderData(0,Qt::Horizontal,tr("id"));//设置表头
// mode->setHeaderData(1, Qt::Horizontal, tr("username"));
// ui->tableView->setModel(mode);
}