• 11806阅读
  • 26回复

自用的数据库访问封装类(20170622更新,修复连接MySql等,未加端口的问题) [复制链接]

上一主题 下一主题
离线realfan
 

只看楼主 倒序阅读 楼主  发表于: 2016-12-16

DBProcess.cpp (23 K) 下载次数:392 DBProcess.h (7 K) 下载次数:377

2017.06.22更新,修复连接MySql等,未加端口的问题
注:本代码需要C++11支持,否则不能用
CDBProcess db;
db.openDB("mytest.db");
void * pQry = db.openRecordsetBySql("select * from tb1");
while(db.moveNext(pQry))
{
    db.readFieldsValueFromRec("sn",            iSN,          //int
                                                       "name",      strName, //QString
                                                       "height",    dHeight,   //double
                                                       "birthday", dt,             //QDateTime
                                                       "photo",     ba);           //QByteArray

}
db.closeRecordset(pQry);
=====================================================
db.addFieldsValueToTbl("TB1",                  //表名
                        "sn",           iSN,
                        "name",      strName,
                        "height",    dHeight,
                        "birthday", dt,
                        "photo",     ba);

====================================================
db.updateTblFieldsValue("TB1", "WHERE sn=20", "height", dHeight,
                                                                                      "photo",   ba);   


1条评分金钱-5
zoapk 金钱 -5 - 2017-03-06
离线XChinux

只看该作者 1楼 发表于: 2016-12-17
已更新到tianchi库
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线圣域天子

只看该作者 2楼 发表于: 2016-12-17
关于数据库连接,我最近发现一个很严重的问题:
当程序连接另一台机器上的数据库时,一旦局域网处于很不稳定的状态下,
数据库连接会断开,如果重新open会造成程序崩溃。
数据库是postgresql, 运行在 ubuntu14.04上
Qt程序是5.7, mingw32版编译。
崩溃时大多是提示DB的版本号不符、指令长度错误(负值或几个T的大小)、或SSL错误等。
个人猜测可能是网络数据传输中丢失内容或内容出错了。

以往在局域网很稳定时,与DB服务器之间,就算是DB服务器重启,拨网线最多只引起数据库操作失败的错误提示。
但如今程序却频频崩溃。

此现象当程序与db处于同一台机器时,没有出现过。
离线zhuifengwy

只看该作者 3楼 发表于: 2016-12-28
感谢
离线liudianwu

只看该作者 4楼 发表于: 2016-12-30
回 圣域天子 的帖子
圣域天子:关于数据库连接,我最近发现一个很严重的问题:
当程序连接另一台机器上的数据库时,一旦局域网处于很不稳定的状态下,
数据库连接会断开,如果重新open会造成程序崩溃。
数据库是postgresql, 运行在 ubuntu14.04上
Qt程序是5.7, mingw32版编译。
....... (2016-12-17 23:37) 

我也遇到过,我的是mysql数据库
欢迎关注微信公众号:Qt实战 (各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发)QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线zhuifengwy

只看该作者 5楼 发表于: 2017-01-09
用在sqlite数据库中进行白条级别的更新操作,会耗时达40秒,请问如何能提高该操作效率
离线zhuifengwy

只看该作者 6楼 发表于: 2017-01-09
用事务解决了

只看该作者 7楼 发表于: 2017-02-08
离线yq5858588

只看该作者 8楼 发表于: 2017-06-10
D:\qtworkspace\mlayout\sqlhelper\DBProcess.h:77: error: C2770: “T QVariant::value(void) const”的显式 模板 参数无效
快乐大男孩
离线yq5858588

只看该作者 9楼 发表于: 2017-06-10
怎么回事啊  出现了上面的问题哦
快乐大男孩
离线realfan

只看该作者 10楼 发表于: 2017-06-11
回 yq5858588 的帖子
yq5858588:D:\qtworkspace\mlayout\sqlhelper\DBProcess.h:77: error: C2770: “T QVariant::value(void) const”的显式 模板 参数无效 (2017-06-10 17:23) 

需要C++11,注意工程配置
离线realfan

只看该作者 11楼 发表于: 2017-06-11
回 yq5858588 的帖子
yq5858588:怎么回事啊  出现了上面的问题哦 (2017-06-10 17:24) 

需要C++11,注意工程配置
离线hunterzf

只看该作者 12楼 发表于: 2017-06-12
谢谢楼主,辛苦了
离线yq5858588

只看该作者 13楼 发表于: 2017-06-15
回 realfan 的帖子
realfan:需要C++11,注意工程配置 (2017-06-11 08:55) 

我已经配置C++11了  还是不行啊  不知道怎么回事
快乐大男孩
离线realfan

只看该作者 14楼 发表于: 2017-06-19
回 yq5858588 的帖子
yq5858588:我已经配置C++11了  还是不行啊  不知道怎么回事 (2017-06-15 17:44) 

我一直在用,都是好的。你用的什么环境,可以把最基本的工程发给我看一下。
离线yq5858588

只看该作者 15楼 发表于: 2017-06-22
回 realfan 的帖子
realfan:我一直在用,都是好的。你用的什么环境,可以把最基本的工程发给我看一下。 (2017-06-19 09:52) 

怎么发你呀   你qq留给我  我发你
快乐大男孩
离线realfan

只看该作者 16楼 发表于: 2017-06-23
回 yq5858588 的帖子
yq5858588:怎么发你呀   你qq留给我  我发你 (2017-06-22 13:33) 

发我邮箱吧
离线john123456

只看该作者 17楼 发表于: 2019-07-24
学习学习
离线hzy495261330

只看该作者 18楼 发表于: 2021-01-20
bool readFieldsValueFromRec(const void* p, const QString str, T& t, Args& ... args) const
    {
        const QSqlQuery* pQry = static_cast<const QSqlQuery*>(p);
        if (nullptr == pQry || false == pQry->isValid())
        {
            return false;
        }
        t = pQry->value(str).value<T>();//显示“QVariant::value”: 未找到匹配的重载函数
        bool bRet = readFieldsValueFromRec(p, args...);
        return bRet;
    }
//显示“QVariant::value”: 未找到匹配的重载函数,是怎么回事呢
离线wting_0128

只看该作者 19楼 发表于: 2021-02-11

离线crazycc

只看该作者 20楼 发表于: 2021-03-28
回 liudianwu 的帖子
liudianwu:我也遇到过,我的是mysql数据库 (2016-12-30 17:25) 

这个问题我也遇到了,大神是怎么解决的?
离线jesse2021

只看该作者 21楼 发表于: 2021-07-13
回 hzy495261330 的帖子
hzy495261330:bool readFieldsValueFromRec(const void* p, const QString str, T& t, Args& ... args) const
    {
        const QSqlQuery* pQry = static_cast<const QSqlQuery*>(p);
     .. (2021-01-20 18:13) 

这个问题解决了吗?
离线lanmanck

只看该作者 22楼 发表于: 2022-03-09
回 crazycc 的帖子
crazycc:这个问题我也遇到了,大神是怎么解决的? (2021-03-28 16:52) 

重开一个db,delete老的再new新的
精彩博客:labisart.com
离线mervyn807

只看该作者 23楼 发表于: 2022-05-09
看了下,写的不错。但是还可以改进不少功能,再封装一层
离线skb123

只看该作者 24楼 发表于: 2022-07-18
MySQL用的挺多的,学习一下,感谢分享
离线zipl1985

只看该作者 25楼 发表于: 2022-07-23
学习一下,谢谢
离线gr582679633

只看该作者 26楼 发表于: 2022-08-16
谢谢楼主
快速回复
限100 字节
 
上一个 下一个