網(wǎng)上有很多關(guān)于pos機(jī)顯示數(shù)據(jù)連接失敗,QT5.14.1+Win7 64+Oracle11gR2 Qt連接數(shù)據(jù)庫(kù)的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)顯示數(shù)據(jù)連接失敗的問(wèn)題,今天pos機(jī)之家(www.afbey.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!
本文目錄一覽:
pos機(jī)顯示數(shù)據(jù)連接失敗
1.qt5.14下OCI驅(qū)動(dòng)編譯完整步驟1.安裝Qt的時(shí)候手動(dòng)選擇安裝源碼資源(默認(rèn)不安裝Source的)
2.進(jìn)入QT安裝目錄下E:\\Qt5.14\\5.14.0\\Src\\qtbase\\src\\plugins\\sqldrivers\\oci
雙擊用qtcreator打開(kāi)oci.pro文件
進(jìn)行如下圖片內(nèi)對(duì)oci.pro的修改
前提準(zhǔn)備:
找到本地oracle客戶端的目錄 例如:C:\\Oracle\\instantclient_11_2
(溫馨提示:oracle客戶端的版本不能比oracle服務(wù)端的低)
3.構(gòu)建項(xiàng)目產(chǎn)生如下錯(cuò)誤:’OCIBindByPos2’ was not declared in this scop
4.雙擊錯(cuò)誤可以進(jìn)入錯(cuò)誤顯示在qsql_oci.cpp文件的1559行
5.錯(cuò)誤原因以及解決方式
新的OCIBindByPos2()函數(shù)和以前的OCIBindByPos()函數(shù)產(chǎn)生出入
新版本OCIBindByPos2()函數(shù)第九個(gè)參數(shù)的數(shù)據(jù)類型是ub4*
舊版本OCIBindByPos()函數(shù)第九個(gè)參數(shù)的數(shù)據(jù)類型是ub2*
故此進(jìn)行一個(gè)強(qiáng)制類型轉(zhuǎn)化,將新版的第九個(gè)參數(shù)改位ub2*類型即可,同時(shí)函數(shù)名也要改為舊版本。
【領(lǐng)QT開(kāi)發(fā)教程學(xué)習(xí)資料,點(diǎn)擊下方鏈接免費(fèi)領(lǐng)取↓↓,先碼住不迷路~】
點(diǎn)擊→領(lǐng)取「鏈接」
6.進(jìn)行項(xiàng)目構(gòu)建,產(chǎn)生的驅(qū)動(dòng)程序在qt所在盤(pán)符下的plugins目錄下的sqldrivers目錄中
注意并不是在qt的目錄下,如下圖所示7.將這產(chǎn)生的幾個(gè)文件拷貝到Qt下你所用編譯器下即可,如下所示
8.如果使用驅(qū)動(dòng)失?。ㄟB接Oracle數(shù)據(jù)庫(kù)失?。?/p>
問(wèn)題:可能是Oracle客戶端的oci.dll動(dòng)態(tài)庫(kù)識(shí)別不到
解決方案兩個(gè):
一、可以將Oracle客戶端的oci.dll動(dòng)態(tài)庫(kù)所在的文件夾的絕對(duì)路徑添加到系統(tǒng)環(huán)境變量當(dāng)中。
二、可以將Oracle客戶端的oci.dll動(dòng)態(tài)庫(kù)直接拷貝到qt項(xiàng)目下
三、可以在qt中直接加載Oracle客戶端oci.dll動(dòng)態(tài)庫(kù),如下操作
//使用的時(shí)候要加入頭文件 #include <QLibrary>QLibrary *joker_lib = NULL; joker_lib = new QLibrary("C:\\\\Oracle\\\\instantclient_11_2\\\\oci.dll"); joker_lib->load(); if(!joker_lib->isLoaded()){ qDebug()<<"動(dòng)態(tài)庫(kù)沒(méi)有被加載!"; return -1; }
// 需要添加的模塊QT += sql12創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例, 并且登錄數(shù)據(jù)庫(kù) -> QSqlDataBase
// 得到不同的數(shù)據(jù)庫(kù)驅(qū)動(dòng)的名字, 如果能得到數(shù)據(jù)庫(kù)對(duì)應(yīng)的驅(qū)動(dòng)名說(shuō)明支持, 如果得不到, 說(shuō)明不支持連接該數(shù)據(jù)庫(kù)// ("QSQLITE", "QMySQL", "QMYSQL3", "QOCI", "QOCI8", "QODBC", "QODBC3", "QPSQL", "QPSQL7")[static] QStringList QSqlDatabase::drivers();// 添加一個(gè)數(shù)據(jù)庫(kù)實(shí)例// 連接oracle 需要的驅(qū)動(dòng)名 -- QOCI[static] QSqlDatabase QSqlDatabase::addDatabase(const QString &type, const QString &connectionName = QLatin1String( defaultConnection ));參數(shù):- type: 指定要連接什么樣的數(shù)據(jù)庫(kù), 這個(gè)字符串是數(shù)據(jù)庫(kù)驅(qū)動(dòng)的名字 - connectionName: 數(shù)據(jù)庫(kù)連接名, 使用這個(gè)名字區(qū)分不同的數(shù)據(jù)庫(kù) 返回值: 得到一個(gè)數(shù)據(jù)庫(kù)實(shí)例 // 設(shè)置數(shù)據(jù)庫(kù)的連接信息// 用戶名, 密碼, 數(shù)據(jù)庫(kù)實(shí)例名, 數(shù)據(jù)庫(kù)的IP, 數(shù)據(jù)庫(kù)的端口// 設(shè)置用戶名void QSqlDatabase::setUserName(const QString &name);// 設(shè)置密碼void QSqlDatabase::setPassword(const QString &password);// 設(shè)置數(shù)據(jù)庫(kù)實(shí)例名void QSqlDatabase::setDatabaseName(const QString &name);// 設(shè)置數(shù)據(jù)庫(kù)的IP// 參數(shù): IP/域名 // 本地連接使用域名: localhost == "127.0.0.1"// 域名需要綁定IP地址void QSqlDatabase::setHostName(const QString &host);// 設(shè)置數(shù)據(jù)庫(kù)的端口// 連接數(shù)據(jù)庫(kù)的時(shí)候這個(gè)函數(shù)一般不需要調(diào)用, 如果數(shù)據(jù)庫(kù)服務(wù)器綁定的不是默認(rèn)端口, 需要調(diào)用該函數(shù)void QSqlDatabase::setPort(int port);// 連接/登錄/打開(kāi)數(shù)據(jù)// 登錄成功: true, 失敗: falsebool QSqlDatabase::open();// 如果登錄失敗, 獲取錯(cuò)誤信息QSqlError QSqlDatabase::lastError() const;QString QSqlError::text() const;// 事務(wù)操作// 開(kāi)啟一個(gè)事務(wù)bool QSqlDatabase::transaction();// 提交數(shù)據(jù)bool QSqlDatabase::commit();// 數(shù)據(jù)回滾bool QSqlDatabase::rollback();
// 示例程序// 打印支持的數(shù)據(jù)庫(kù)的驅(qū)動(dòng)qDebug() << QSqlDatabase::drivers();// 創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");// 設(shè)置連接信息db.setHostName("192.168.xxx.xxx");db.setDatabaseName("orcl");db.setUserName("scott");db.setPassword("tiger");// 連接數(shù)據(jù)庫(kù)bool bl = db.open();if(!bl){ qDebug() << "連接數(shù)據(jù)失敗" << db.lastError().text();}else{ qDebug() << "連接數(shù)據(jù)成功";}
用于執(zhí)行sql語(yǔ)句的類 -> QSqlQuery
【領(lǐng)QT開(kāi)發(fā)教程學(xué)習(xí)資料,點(diǎn)擊下方鏈接免費(fèi)領(lǐng)取↓↓,先碼住不迷路~】
點(diǎn)擊→領(lǐng)取「鏈接」
// 常用的構(gòu)造函數(shù)QSqlQuery::QSqlQuery(const QString &query = QString(), QSqlDatabase db = QSqlDatabase())參數(shù):- query: 即將要被執(zhí)行的sql語(yǔ)句 - db: 數(shù)據(jù)庫(kù)實(shí)例// 設(shè)置并執(zhí)行sql語(yǔ)句// sql語(yǔ)句執(zhí)行成功了:true, 失敗: falsebool QSqlQuery::exec(const QString &query);bool QSqlQuery::exec();// 如果執(zhí)行的查詢的語(yǔ)句, 會(huì)的得到一個(gè)結(jié)果集, 這個(gè)結(jié)果集在 QSqlQuery 對(duì)象內(nèi)部// 如何遍歷結(jié)果集?// 如果得到一個(gè)條記錄返回: true, 否則: falsebool QSqlQuery::next();while(q->next()){ // 將當(dāng)前記錄的字段值取出}// 如何將當(dāng)前記錄的字段值取出?// 參數(shù) index -> 字段的下標(biāo)(編號(hào)), 第一個(gè)字段用0表示QVariant QSqlQuery::value(int index) const;// 參數(shù): name: 字段的名字QVariant QSqlQuery::value(const QString &name) const;
示例代碼
// 打印支持的數(shù)據(jù)庫(kù)的驅(qū)動(dòng)qDebug() << QSqlDatabase::drivers();// 創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");// 設(shè)置連接信息db.setHostName("192.168.xxx.xxx");db.setDatabaseName("orcl");db.setUserName("scott");db.setPassword("tiger");// 連接數(shù)據(jù)庫(kù)bool bl = db.open();if(!bl){ qDebug() << "連接數(shù)據(jù)失敗" << db.lastError().text();}else{ qDebug() << "連接數(shù)據(jù)成功";}// 對(duì)數(shù)據(jù)操作使用sql語(yǔ)句// 創(chuàng)建一個(gè)操作sql語(yǔ)句的類QSqlQuery query;QString sql = "select * from dept";bl = query.exec(sql);if(bl == false){ qDebug() <<"查詢失敗..."; return;}// 遍歷結(jié)果集while(query.next()){ // 將當(dāng)前記錄的字段值取出 qDebug() << "編號(hào): " << query.value("deptno").toInt() << ", 姓名: " << query.value("dname").toString() << ", 位置: " << query.value("loc").toString();}// 開(kāi)啟一個(gè)事務(wù)db.transaction();sql = "insert into dept values(01, 'Joker', '上海')";bl = query.exec(sql);if(bl){ // 提交數(shù)據(jù) db.commit();}else{ // 數(shù)據(jù)回滾 db.rollback();}
qt連接mysql數(shù)據(jù)錯(cuò)誤信息
// "Driver not loaded Driver not loaded"/*原因: 并不是qt中沒(méi)有mysql驅(qū)動(dòng), 缺的是一個(gè)mysql的動(dòng)態(tài)庫(kù)這個(gè)動(dòng)態(tài)庫(kù)是怎么得到的?- windows上需要安裝mysql, mysql的安裝目錄C:\\Program Files (x86)\\MySQL\\MySQL Server 5.7\\lib\\libmysql.dll需要將這個(gè)動(dòng)態(tài)庫(kù)拷貝到qt的編譯套件的bin目錄:C:\\Qt\\Qt5.9.3\\5.9.3\\mingw53_32\\bin如果Qt編譯套件是32位, libmysql.dll 應(yīng)該是32位如果Qt編譯套件是64位, libmysql.dll 應(yīng)該是64位*/
pos機(jī)一直顯示連接失敗PN碼
接口沒(méi)接好。
pos機(jī)顯示pin碼需要檢查接口是否插入正確。檢查電話線是否是完好的。檢查網(wǎng)線接口是否插入正確。檢查是否插在有線路由器上,是否換過(guò)路由器。鬧渣若排除了以上內(nèi)容,請(qǐng)嘗試關(guān)機(jī)重啟,如故障依舊,頃彎并建議聯(lián)系業(yè)務(wù)經(jīng)理協(xié)助解決雀跡。
以上就是關(guān)于pos機(jī)顯示數(shù)據(jù)連接失敗,QT5.14.1+Win7 64+Oracle11gR2 Qt連接數(shù)據(jù)庫(kù)的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)顯示數(shù)據(jù)連接失敗的知識(shí),希望能夠幫助到大家!
