QT程序Release后无法连接数据库的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kanchuan1905/article/details/49443931

      在生成可执行文件给老板看设计的时候,遇到了无法保存数据的问题,觉得可能是无法链接数据库,或者缺少什么内容的问题,在网上查了一些资料,最终测试可顺利完成数据库的链接。经检验,在window 7 32 or 64下都可以使用。使用的工具是Qt Creator 2.8.0,qt版本4.8.5 数据库为Sqlite 若是使用其他数据库,可能略有不同。

      具体操作步骤如下:

      1)在release文件夹里创建plugins文件夹,并将QT安装目录下的plugins\sqldrivers文件夹下的libqsqlite4.a qsqlite4.dll(数据库不同可能一样) 复制到release\plugins文件夹(如果sqldrivers文件夹中没有你需要的驱动,可能就需要下载其他的驱动了,方法大致相同)

       2)main.cpp中添加以下语句 QApplication::addLibraryPath("./plugins");

       3)在构建中选中release 后进行编译,生成exe文件。

       4)新建文件夹,在你安装qt的目录中(我的目录是D:/Qt/4.8.5/bin)查找qtsql4.dll   libgcc_s_dw2-1.dll mingwm10.dll  QtCore4.dll  QtGui4.dll 然后复制到新建的文件夹中

       5)将release下的exe文件和sqldrivers文件夹复制到新建的文件夹。

       6)运行生成的exe 文件,就可测试功能了。

展开阅读全文

保存图片后无法连接数据库

08-02

保存图片rnvoid FINDDlg::OnButton6() rnrn CFileDialog fDlg(false, "bmp", "",rn OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,rn "Bmp files (*.bmp)|*.bmp|");rn if (fDlg.DoModal () != IDOK) return;rn CString filename =fDlg.GetFileName();rn SaveAsBmp(filename);rn MessageBox("保存成功");rnrn//包数据写入数据库rnvoid CTestDlg::PutData(CString strResult1, CString strResult2,rn CString strResult3, CString strResult4, CString strResult5, CString strResult6, rn CString strResult7, CString strResult8, char IDCardNo[18])rnrn CoInitialize(NULL); // 初始化COM环境rn _ConnectionPtr conn(__uuidof(Connection)); // 创建连接对象rn _RecordsetPtr rst(__uuidof(Recordset)); // 创建记录集rn //conn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=LogData.mdb;Persist Security Info=False;Jet OLEDB:Database Password=691126" ,"", "", adModeUnknown); // 打开数据库并建立连接(有密码)rn conn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=LogData.mdb;" ,"", "", adModeUnknown); // 打开数据库并建立连接(没有密码)rn rst->Open(_variant_t("select * from TLog"), _variant_t((IDispatch*) conn), adOpenDynamic, adLockOptimistic, -1); // 读取数据表rn rst->AddNew();rn rst->PutCollect("FNo",IDCardNo);rn rst->PutCollect("FName",(_variant_t)strResult1);rn rst->PutCollect("FSex",(_variant_t)strResult2);rn rst->PutCollect("FMZ",(_variant_t)strResult3);rn rst->PutCollect("FBirth",(_variant_t)strResult4);rn rst->PutCollect("FAddress",(_variant_t)strResult5);rn rst->PutCollect("FSendDep",(_variant_t)strResult6);rn rst->PutCollect("FBegin",(_variant_t)strResult7);rn rst->PutCollect("FEnd",(_variant_t)strResult8);rn rst->PutCollect("Fdate",(_variant_t)TI);rnrn CFile file;rn file.Open("picture1.bmp", CFile::modeRead);rn m_nFileLen = file.GetLength();rn m_pBMPBuffer = new char[m_nFileLen + 1];rn file.ReadHuge(m_pBMPBuffer,m_nFileLen);rn rn char *pBuf = m_pBMPBuffer;rn VARIANT varBLOB;rn SAFEARRAY *psa;rn SAFEARRAYBOUND rgsabound[1];rn if(pBuf)rn rn rgsabound[0].lLbound = 0;rn rgsabound[0].cElements = m_nFileLen;rn psa = SafeArrayCreate(VT_UI1, 1, rgsabound);rn for (long i = 0; i < (long)m_nFileLen; i++)rn SafeArrayPutElement (psa, &i, pBuf++);rn varBLOB.vt = VT_ARRAY | VT_UI1;rn varBLOB.parray = psa;rn //rst->GetFields()->GetItem("FPhoto")->AppendChunk(varBLOB);rn rnrn rst->Update();rn rst->Close();rn conn->Close();rn rst.Release(); // 释放相应COM接口上的引用计数 rn conn.Release();rn CoUninitialize();rnrnrn求大神指导下,为什么我点击保存按钮点击保存后,图片成功保存,但只要涉及数据库的地方报错,提示[img=https://img-bbs.csdn.net/upload/201408/02/1406962957_984430.jpg][/img]rn但图片保存在工程文件夹下就没事,保存到其他地方就报错。 论坛

关闭DMZ后无法连接数据库

05-09

最近在做一个网站项目,在本地可以运行,可是想让它在互联网上也可以访问,于是就用了IIS+花生壳搞定了,我用的是XP专业版 sp3,学校自己宿舍拉的网通ADSL,华为MT800的猫,腾达TE1618SK的路由器,杀毒软件ESET+东方微点。第一次弄,废了好大劲才搞定。研究过程中发现,如果不启用路由器DMZ设置将自己暴露出来,就连不上数据库,连接字符串为 uid=xxx;pwd=xxx;server=huhai.51vip.biz\SQLEXPRESS;Initial Catalog=db_LibraryMS,当然我已经关掉了Windows的防火墙。但是今早上受到来自日本的入侵,东方微点拦截的。早上我一人在宿舍,其他人回来一上网不久就会掉线,而且连路由器的设置界面都进不了,非得重启路由器才能连上网,过上一会又是掉线,进不了路由器,反复如此,实在烦人。我关机了网络就正常。关机后在别人机子上进了路由器关掉DMZ后,开机,网络正常,可却连不上数据库,打开DMZ数据库立马连上,可是不敢长开,网络频繁崩溃可不是件可以容忍的事。估计打开DMZ后有人攻击我,导致路由器崩溃网络坏死。可是不开怎么连数据库,但是早上我一人用的时候打开DMZ也没见网络崩溃,只是有人回来一上网就网络崩溃,360的ARP防火墙也是打开的,也没收到ARP攻击的报警,也应该不会是局域网ARP攻击,不然不管开不开DMZ都上不了网。高手给个解决方案吧,既能连数据库又不会导致网络瘫痪。 论坛

没有更多推荐了,返回首页