大学生二手市场管理系统(qt连接数据库及tableview的部分操作)

    我们的数据库课程设计选题是大学生二手市场管理系统。运用数据库知识建立好表之后,就想使用qt把它实现出来,这里写下遇到的困难和解决办法。

  • 连接数据库   

    1:首先在pro文件中加入

QT += core sql widgets gui
    2:然后是建立连接
bool SqlOp::CreateConnection()
{
	QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "connection1");

	db.setDatabaseName("test"); //这是我在mysql中建立的数据库的名字 使用时应该替换成自己的
	db.setUserName("root");  
	//dataBase.setHostName("localhost");  //这句 在我这个程序中并不需要,但是之前测试的时候,不写会报错,名称必须是localhost

	if (db.open())
	{
		qDebug() << "CreateConnection:" << "connect  success";
		return true;
	}
	else
	{
		qDebug() << db.lastError().text();
		return false;
	}
}

     

    3:这时他会报那个driver not loaded的错误

    

    解决办法:

    将MYSQL安装目录下的libmysql.dll复制到Qt安装目录下的bin目录下即可。

    

    4:查询还是查不出来    

    解决办法:

QSqlQuery query(GetDatabase()); // GetDatabase() 返回的就是上文中的test.db

      

     这时就把查询语句和数据库连接在一起了,查询就可以成功了。

  • tableview 的使用

    1:返回选中单元格中的内容


connect(ui.tableView, SIGNAL(clicked(QModelIndex)), this, SLOT(getProductCode(QModelIndex)));
void Tab1::getProductCode(QModelIndex Index)  
{  
  
    code = Index.data().toString();  
      
}   


    2:获取指定单元格中的内容

QModelIndex index = model->index(row, column, QModelIndex()); //coulumn row 需要自己输入整型数值
SID = index.data().toString();  

    3:去掉行号 如图:

    


 QHeaderView* headerView = ui.tableView->verticalHeader();
 headerView->setHidden(true);
    4:单元格长度平分tableview
 ui.tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

    5:modle 配合tableview查询

QSqlQueryModel *model = new QSqlQueryModel(this);
model->setQuery(str, SqlOp::GetDatabase()); // str 是QString类型的查询语句
model->setHeaderData(0, Qt::Horizontal, "商品号"); //设置表头
model->setHeaderData(1, Qt::Horizontal, "商品名");
model->setHeaderData(2, Qt::Horizontal, "商品价格");
model->setHeaderData(3, Qt::Horizontal, "商品描述");
ui.tableView->setModel(model);

最后:大学生二手市场管理系统具体代码

           https://github.com/RedHaohao/Secondary-market-management-System/tree/master









猜你喜欢

转载自blog.csdn.net/Sunburst_Lf/article/details/80648688