来自 金沙澳门官网网址 2019-12-19 15:02 的文章
当前位置: 金沙澳门官网网址 > 金沙澳门官网网址 > 正文

QT数据库连接的几个重要函数的使用及注意事项,

/*加载驱动*/QSqlDatabase*myDataBases=newQSqlDatabase(QSqlDatabase::addDatabase("QMYSQL"));/*填写连接参数*/myDataBases-setHostName("127.0.0.1");myDataBases-setPort(3306);myDataBases-setUserName("root");myDataBases-setPassword("root123");myDataBases-setDatabaseName("test");/*打开数据库*/if(!myDataBases-open()){QMessageBox::critical(this,"错误","打开数据库失败");}/*查找数据*/QSqlQueryModel*model=newQSqlQueryModel();model-setQuery("select*fromt_person_name_temp;");model-setHeaderData(0,Qt::Horizontal,tr("序号"));model-setHeaderData(1,Qt::Horizontal,tr("日期"));model-setHeaderData(2,Qt::Horizontal,tr("名字"));model-setHeaderData(3,Qt::Horizontal,tr("职位"));/*显示数据*/ui-tableView-setModel(model);

图片 1

功能:设置数据库名,数据库名必须在数据库连接打开前被设置。

代码使用了QSqlDatabase::addDatabase("QMYSQL"));加载了数据库驱动.以前用QSqlQuery这个对象会在初始化的时候就会关联QSqlDatabase对象,然后执行QSqlQuery.exec()方法执行sql.但是我这里QSqlQueryModel*model并没有关联这个QSqlDatabase的对象啊.它为什么能查询到数据???要是这样能查到.那一个进程里面连了不只一个数据库不就互相覆盖了....?!另外有个问题就是QSqlQueryModel能否快速把position这一列枚举为其它东西呢?例如0是经理,1是组长,2是普通员工?!

 

 

功能:根据提供的连接名从数据库连接列表中移除数据库连接;


例:

 

设置QODBC数据库名实例

db.setDatabaseName("DRIVER={Microsoft Access Driver (.mdb)};FIL={MS Access};DBQ=myaccessfile.mdb");*

例:

QSqlQuery::QSqlQuery(const QString & query = QString(), QSqlDatabase db = QSqlDatabase())

参数:connectionName ——数据库连接名

参数:connectionName ——数据库连接名

功能:通过连接名返回数据库连接对象,这个数据库连接对象必须在之前被加入到了数据库连接列表中(通过addDatabase函数加入),并且可根据open标志及数据库状态决定是否打开数据库。

注:使用该函数容易出错,只有在某连接下没有绑定查询对象时,才能将其删除,如果有其他指向该数据库连接对象的指针,需要在关闭该连接后将该指针释放。


注:在某些情况下,要为QSqlQuery对象指定明确的数据库连接,否则执行查询时会出现”QSqlQuery::exec: database not open“错误提示

 

   db ——数据库对象


功能:将某种类型的数据库加入到数据库连接列表中,可指定连接名,如果没有指定,将使用缺省的数据库连接名;返回数据库连接

The correct way to do it:

 

本文由金沙澳门官网网址发布于金沙澳门官网网址,转载请注明出处:QT数据库连接的几个重要函数的使用及注意事项,

关键词: