pos機(jī)顯示數(shù)據(jù)連接失敗,QT5.14.1+Win7 64+Oracle11gR2 Qt連接數(shù)據(jù)庫(kù)

 新聞資訊  |   2023-03-18 07:43  |  投稿人:pos機(jī)之家

網(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)看下吧!

本文目錄一覽:

1、pos機(jī)顯示數(shù)據(jù)連接失敗

2、pos機(jī)一直顯示連接失敗PN碼

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; }


2. qt中的數(shù)據(jù)庫(kù)操作

// 需要添加的模塊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í),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://www.afbey.com/news/9783.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。