QT连接MySQL

创建基本链接以及基本的单表查询


    //指定一个数据库文件的路径,就相当于新建一个文件夹,里面去存放东西
    //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);


}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值