收藏 分销(赏)

QT在vs环境下操作数据库.doc

上传人:pc****0 文档编号:7791202 上传时间:2025-01-17 格式:DOC 页数:3 大小:74.50KB 下载积分:10 金币
下载 相关 举报
QT在vs环境下操作数据库.doc_第1页
第1页 / 共3页
QT在vs环境下操作数据库.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
Qt 连接数据库 1:连接sqlite m_dstDB = QSqlDatabase::addDatabase("QSQLITE","tempsql"); //tempmsql为了不取默认连接,若果只是用一个数据库的时候可以省略,但是如果是两个数据库中数据库中的数据相互调用时,显得就重要了,比如从一个数据库中取数据插入另外一个数据库中 操作数据库:利用QSqlQuery 进行操作 m_Serverdb.setDatabaseName(dbpath); 设置数据库连接属性,其中dbpath 可以是“123.db3”也可以包含路径例如:“d:/12/123.db3” if (m_Serverdb.open()) { QSqlQuery tablequery=QSqlQuery(m_Serverdb); tablequery.exec("select * from sqlite_master WHERE sql is not null");//查看sqlite中几个用户表 tablequery.last(); int tablecount=tablequery.at(); //结果集中一共多少条数据 if (tablecount<1) { QString strStation=" CREATE TABLE t_station(id int PRIMARY KEY, name VARCHAR(20), district int );"; QSqlQuery qry_createDB=QSqlQuery(m_Serverdb); //一定要选定数据库 qry_createDB.exec(strStation); qry_createDB.finish(); } } 2:连接sqlserver m_srcDB=QSqlDatabase::addDatabase("QODBC","tempms");//tempms为了不取默认连接,采用odbc连接 QString strDatabaseName = QString("DRIVER={SQLServer};Server=(%1);Database=%2").arg("local"). arg(m_srcCon.m_dbName);//sqlserver 连接,local 不要改变 m_srcDB.setHostName(m_srcCon.m_host);// 如果想连接远程数据的时候,输入ip地址 m_srcDB.setPort(m_srcCon.m_port); //端口默认为1433 m_srcDB.setDatabaseName(strDatabaseName); m_srcDB.setUserName(m_srcCon.m_user); m_srcDB.setPassword(m_srcCon.m_password); if ( m_srcDB.open()) //打开数据库 { //m_srcQuery=new QSqlQuery(m_srcDB) return true; } 调用储存过程例子: QSqlQuery pro_query=QSqlQuery(m_srcDB); bool flag=pro_query.exec("exec 存储过程名称"); if (pro_query.first()) //指向第一条数据 { QSqlQuery querytran=QSqlQuery(m_Serverdb); querytran.exec("PRAGMA synchronous = OFF;"); //sqlite为小型关系数据库,插入大量数据的时候就要采用事务进行提交,否则耗时会很长。 querytran.exec("begin;"); do { comcount++; QString id=pro_query.value(0).toString(); QString desc=pro_query.value(1).toString(); QSqlQuery query=QSqlQuery(m_Serverdb); query.prepare("INSERT INTO A (id, desc) VALUES (:id, :desc)"); query.bindValue(":id", id); //在这定占位符上确定绑定的值 query.bindValue(":desc",desc); query.exec(); }while(pro_query.next()&& bResultquery); //指向下一条数据 querytran.exec("commit;"); querytran.clear(); } Qt sql 操作总结: #include <QtSql> QSqlDatabase类实现了数据库连接的操作 QSqlQuery类用来执行SQL语句 QSqlRecord类 封装数据库所有记录 int id = query.value(1).toInt(); seek(int n) :query指向结果集的第n条记录。指定当前的位置 first() :query指向结果集的第一条记录。 last() :query指向结果集的最后一条记录。 next() :query指向下一条记录,每执行一次该函数,便指向相邻的下一条记录。 previous() :query指向上一条记录,每执行一次该函数,便指向相邻的上一条记录。 record() :获得现在指向的记录。 value(int n) :获得属性的值。其中n表示你查询的第n个属性,比方上面我们使用“select * from student”就相当于“select id, name from student”,那么value(0)返回id属性的值,value(1)返回name属性的值。该函数返回QVariant类型的数据,关于该类型与其他类型的对应关系,可以在帮助中查看QVariant。 at()//返回当前查询的位置 int fieldNo = query.record().indexOf(“name”);//返回"name"的列号
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服