Qt5.2连接Mysql数据库,并将数据读取到页面上

显示页面如如下图所示:

Qt5.2连接Mysql数据库,并将数据读取到页面上_第1张图片

首先在.pro文件中 加上 QT+= sql

将每条数据存储为结构体类型的数据 ,包含三个字段,本文只显示了其中的两个字段,结构体定义如下:

struct message_info
   {
      int id;
      QString name;
      QString banji;
   };

连接数据库代码如下图所示:

传入参数为结构体类型的vector,vector可以保存多条结构体类型的数据。

//连接数据库
QVector<message_info>* CreateCon::createConnection(QVector<message_info> *v1)
{
  QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
  db.setHostName("localhost");
  db.setDatabaseName("lianjie");
  db.setUserName("root");
  db.setPassword("123");
  bool ret=db.open();
  message_info formvalue;
  //QStringList formvalue;
  if(ret)
  {
    qDebug("open db ok");
    QSqlQuery query( "select *  from user " );
 
  
        while(query.next())
        {
             formvalue.id=query.value(1).toInt();
             formvalue.name=query.value(0).toString();
             formvalue.banji=query.value(2).toString();
             v1->push_back(formvalue);
 
  
        }
 
  
   }
   else
   {
      qDebug()<<"open db failed";
      qDebug()< 
  
   }
  return v1;
}
新建表格并将数据填入代码如下所示:

//新建表格,并把从数据库中的值填入
QTableWidget*   CreateCon::tableCreate(QVector<message_info> *v1){
    table=new QTableWidget(2, 2);//新建表格
    table->verticalHeader()->setHidden(true);//去掉行号
    QStringList list;
    list<<"名称"<<"信息";
    for (int i = 0; i < list.size(); ++i){
        table->setHorizontalHeaderItem(i,new QTableWidgetItem(list.at(i)));//设置字段名称
    }
 
  
    for(int j=0;j<table->rowCount();j++)
    {
        qDebug()<<table->columnCount();
          int k=0;
          table->setItem(j,k,new QTableWidgetItem(v1->at(j).name));
          table->setItem(j,k+1,new QTableWidgetItem(v1->at(j).banji));
    }
return table;
}
最后通过main函数显示出来,main函数代码如下所示:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    CreateCon w;
    QHBoxLayout *layout=new QHBoxLayout();
    QVector<message_info> *v1=new QVector<message_info>();
    layout->addWidget( w.tableCreate(w.createConnection(v1)));
    w.setLayout(layout);
    w.show();
    return a.exec();
}


你可能感兴趣的:(Qt)