亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

記錄一個(gè)C++在條件查詢(xún)時(shí)遇到的問(wèn)題(推薦)

 更新時(shí)間:2021年01月22日 15:12:19   作者:小鎮(zhèn)拾光  
這篇文章主要介紹了記錄一個(gè)C++在條件查詢(xún)時(shí)遇到的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

C++在條件查詢(xún)時(shí)困擾了6個(gè)小時(shí)的小問(wèn)題 先說(shuō)結(jié)論1. 貼上運(yùn)行錯(cuò)誤的原碼2. 錯(cuò)誤分析2.1 sql語(yǔ)句錯(cuò)誤2.2 sql語(yǔ)句替換2.3 繼續(xù)問(wèn)題分析 3.總結(jié)

先說(shuō)結(jié)論

1:如果由%作為占位符.arg()傳參的模式,則sql_query.exec(sql_str)執(zhí)行查詢(xún)時(shí),必須加上查詢(xún)語(yǔ)句。
2:如果由?作為占位符.addBindValue()傳參的模式,則sql_query.exec()執(zhí)行查詢(xún)時(shí),不可加上查詢(xún)語(yǔ)句。

1. 貼上運(yùn)行錯(cuò)誤的原碼

int InputManage::queryInputsByUserId(int userId,map<uint,Model_AllInPut> &AInputMap){
 if(!db.openDB()){
  db.openDB();
 }
 qDebug()<<"用戶(hù)ID為::::"<<userId;	//打印正確為1
 QSqlQuery sql_query;				//數(shù)據(jù)庫(kù)查詢(xún)對(duì)象
 QString select_str = "select * from t_allinput where UserId = ?";//條件查詢(xún)語(yǔ)句,將?改為1放到Navicat中可查詢(xún)出結(jié)果
 sql_query.prepare(select_str);		//預(yù)處理
 sql_query.addBindValue(userId); 	//根據(jù)傳入的id去查詢(xún)記錄
 if(!sql_query.exec(select_str)) 	//執(zhí)行查詢(xún)sql語(yǔ)句
 {
  qDebug()<<sql_query.lastError();
 }
 else
 {
  while(sql_query.next()) //遍歷結(jié)果
  {
   Model_AllInPut AInput;
   AInput.setAllInPutId(sql_query.value(0).toUInt()); //根據(jù)index遍歷
   uint Id = AInput.AllInPutId();
   AInput.setConcrete_compressive_grade(sql_query.value(1).toString());
			//... 省略中間字段 ...
   AInput.setUserId(sql_query.value(19).toUInt());
   AInputMap[Id]= AInput;        //將鍵值對(duì)放入map中
  }
  db.closeDB();
  return AInputMap.size();
 }
 db.closeDB();
 return 0;
}

結(jié)果,Qt Creater報(bào)錯(cuò):參數(shù)個(gè)數(shù)不匹配(“Parameter count mismatch”)。

2. 錯(cuò)誤分析

2.1 sql語(yǔ)句錯(cuò)誤

2.1.1 數(shù)據(jù)庫(kù)字段不匹配

我看了數(shù)據(jù)庫(kù)結(jié)構(gòu),表名字段名確認(rèn)沒(méi)問(wèn)題(在Navicat中可進(jìn)行查詢(xún));
?為英文也沒(méi)問(wèn)題;
UserId字段為整形,不用加引號(hào)的,但死馬當(dāng)活馬醫(yī)試一試。
然后我在?上加單引號(hào),不報(bào)錯(cuò)了,但是查詢(xún)出的記錄個(gè)數(shù)為0。

2.1.2 占位符的問(wèn)題

分析原因:不帶條件查詢(xún)能查詢(xún)出來(lái),并且我在Navicat中條件查詢(xún)將?替換成具體的數(shù)值也可以查詢(xún)出來(lái)。
所以問(wèn)題很可能是出在?占位符上。(這里不再區(qū)分?的中英文了,都是英文,為了方便不再切換為英文)

2.2 sql語(yǔ)句替換

于是詢(xún)問(wèn)同學(xué),同學(xué)看了也不太清楚,換上同學(xué)的%占位符進(jìn)行語(yǔ)句查詢(xún)。結(jié)果: 查 詢(xún) 成 功,我的天那?。。?br /> 僅將sql語(yǔ)句替換為如下:

QString select_str = QString( "select * from t_allinput where UserId = '%1'").arg(userId);//條件查詢(xún)語(yǔ)句,

2.3 繼續(xù)問(wèn)題分析

為什么我會(huì)迷茫:因?yàn)槲业钠渌碇幸埠蓄?lèi)似 where 字段名 = ? 的條件查詢(xún)語(yǔ)句。
其它表都能運(yùn)行成功,為什么這個(gè)表不行?
首先我懷疑是因?yàn)檫@個(gè)表查詢(xún)的字段不是主鍵。(我知道是不是主鍵影響不大,但還是盡可能試一試)
于是我將字段改為主鍵字段進(jìn)行查詢(xún),錯(cuò)誤依舊。
被逼無(wú)奈我將兩個(gè)表的條件查詢(xún)函數(shù)逐字比較,最后發(fā)現(xiàn)原來(lái)問(wèn)題出執(zhí)行查詢(xún)sql語(yǔ)句的地方。
對(duì)比:

if(!sql_query.exec(select_str)) 	//執(zhí)行查詢(xún)sql語(yǔ)句
	if(!sql_query.exec()) 				//執(zhí)行查詢(xún)sql語(yǔ)句

3.總結(jié)

條件查詢(xún)的占位符與查詢(xún)執(zhí)行的匹配:

1:如果由%作為占位符.arg()傳參的模式,則查詢(xún)語(yǔ)句執(zhí)行時(shí)需要加上查詢(xún)語(yǔ)句。(已驗(yàn)證,必須加上)
2:如果由?作為占位符.addBindValue()傳參的模式,則查詢(xún)語(yǔ)句執(zhí)行時(shí)不可以加上查詢(xún)語(yǔ)句。

示例1:

QSqlQuery sql_query;										//數(shù)據(jù)庫(kù)查詢(xún)對(duì)象
QString select_str = QString( "select * from t_allinput where UserId = '%1'").arg(userId);//%作為占位符.arg()傳參
sql_query.prepare(select_str);								//預(yù)處理
if(!sql_query.exec(select_str)) 							//+++++ 必須帶查詢(xún)語(yǔ)句 ++++++++//

示例2:

QSqlQuery sql_query;												//數(shù)據(jù)庫(kù)查詢(xún)對(duì)象
QString select_str = "select * from t_allinput where UserId = ?";	//?作為占位符
sql_query.prepare(select_str);										//預(yù)處理
sql_query.addBindValue(userId); 									//.addBindValue()傳參
if(!sql_query.exec()) 												//+++++ 不可帶查詢(xún)語(yǔ)句 ++++++++//

到此這篇關(guān)于記錄一個(gè)C++在條件查詢(xún)時(shí)遇到的問(wèn)題。的文章就介紹到這了,更多相關(guān)C++條件查詢(xún)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • C++?opencv圖像處理實(shí)現(xiàn)圖片邊緣檢測(cè)示例

    C++?opencv圖像處理實(shí)現(xiàn)圖片邊緣檢測(cè)示例

    這篇文章主要為大家介紹了C++?opencv實(shí)現(xiàn)圖片邊緣檢測(cè)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • C++實(shí)現(xiàn)校園運(yùn)動(dòng)會(huì)報(bào)名系統(tǒng)

    C++實(shí)現(xiàn)校園運(yùn)動(dòng)會(huì)報(bào)名系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)校園運(yùn)動(dòng)會(huì)報(bào)名系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • C語(yǔ)言實(shí)現(xiàn)從文件讀入一個(gè)3*3數(shù)組,并計(jì)算每行的平均值

    C語(yǔ)言實(shí)現(xiàn)從文件讀入一個(gè)3*3數(shù)組,并計(jì)算每行的平均值

    今天小編就為大家分享一篇C語(yǔ)言實(shí)現(xiàn)從文件讀入一個(gè)3*3數(shù)組,并計(jì)算每行的平均值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • C++常量詳解二(常量形參,常量返回值,常量成員函數(shù))

    C++常量詳解二(常量形參,常量返回值,常量成員函數(shù))

    這篇文章主要介紹了C++常量詳解二(常量形參,常量返回值,常量成員函數(shù)),需要的朋友可以參考下
    2017-06-06
  • c++下迭代器總結(jié)

    c++下迭代器總結(jié)

    大家好,本篇文章主要講的是c++下迭代器總結(jié),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽
    2021-12-12
  • OpenCV獲取視頻的每一幀并保存為.jpg圖片

    OpenCV獲取視頻的每一幀并保存為.jpg圖片

    這篇文章主要為大家詳細(xì)介紹了OpenCV獲取視頻的每一幀,并保存為.jpg圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • C++控制臺(tái)實(shí)現(xiàn)俄羅斯方塊游戲

    C++控制臺(tái)實(shí)現(xiàn)俄羅斯方塊游戲

    這篇文章主要為大家詳細(xì)介紹了C++控制臺(tái)實(shí)現(xiàn)俄羅斯方塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • C++實(shí)現(xiàn)LeetCode(163.缺失區(qū)間)

    C++實(shí)現(xiàn)LeetCode(163.缺失區(qū)間)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(163.缺失區(qū)間),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++超詳細(xì)講解拷貝構(gòu)造函數(shù)

    C++超詳細(xì)講解拷貝構(gòu)造函數(shù)

    我們經(jīng)常會(huì)用一個(gè)變量去初始化一個(gè)同類(lèi)型的變量,那么對(duì)于自定義的類(lèi)型也應(yīng)該有類(lèi)似的操作,那么創(chuàng)建對(duì)象時(shí)如何使用一個(gè)已經(jīng)存在的對(duì)象去創(chuàng)建另一個(gè)與之相同的對(duì)象呢
    2022-06-06
  • C++ 虛函數(shù)及虛函數(shù)表詳解

    C++ 虛函數(shù)及虛函數(shù)表詳解

    這篇文章主要介紹了c++ 虛函數(shù)及虛函數(shù)表詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11

最新評(píng)論