qt調用mysql調用了存儲過_Qt調用Server SQL中的存儲過程

Server SQL中的存儲過程如下:

CREATE procedure PINSERTPC

@pcnum?int,

@pcname?varchar(50),

@pctype?int,

@ipaddress?varchar(50),

@port??int,

@pcid??int output

as

--declare @pcid int

if exists (select * from COMPUTERTABLE where PcNum = @pcnum)

set @pcid = -1

else

begin

insert into COMPUTERTABLE (PcNum, PcName, PcType, IpAddress, Port)

values (@pcnum, @pcname, @pctype, @ipaddress, @port)

select @pcid = SCOPE_IDENTITY()

end

--return @pcid

GO

根據網上搜索文章《qt中調用sql server的存儲過程》內容如下:

寫了個存儲過程,準備使用qt調用,數據庫是sqlserver 2000按照參考文檔

調用是下面這樣的

QSqlQuery query;

query.prepare("CALL InsertImgEntity( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

query.bindValue(0,datano);

query.bindValue(1,DataCorner);

query.bindValue(2,DataZD);

query.bindValue(3,DataCommon);

query.bindValue(4,ImgCode);

query.bindValue(5,ImgCodeZ);

query.bindValue(6,"png");

query.bindValue(7,pngImage,QSql::Binary);

query.bindValue(8,"GoldMap Gaoyong Sun");

query.bindValue(9,QDateTime::currentDateTime ());

但是我在windows下卻無法調用成功。調試跟蹤,發覺我在調試中存儲過程是通過exec調用的,故此將代碼修改如下,問題解決,造成這種結果的原因可能是數據庫的不同吧。

query.prepare("exec InsertImgEntity ?, ?, ?, ?, ?, ?, ?, ?, ?, ?");

query.bindValue(0,datano);

query.bindValue(1,DataCorner);

query.bindValue(2,DataZD);

query.bindValue(3,DataCommon);

query.bindValue(4,ImgCode);

query.bindValue(5,ImgCodeZ);

query.bindValue(6,"png");

query.bindValue(7,pngImage,QSql::Binary);

query.bindValue(8,"GoldMap Gaoyong Sun");

query.bindValue(9,QDateTime::currentDateTime ());

可是工作需要,存儲過程中要有返回值,或者輸出參數,返回當前插入的ID號。通過測試得到解決方法。以最上方存儲過程為例Qt中代碼如下:

bool QtSqlServer::SqlInsertPcData(QtPcData* pcData)

{

bool bFlag = false;

QSqlQuery query;

query.prepare("exec PINSERTPC ?, ?, ?, ?, ?, ? output");

query.bindValue(0, pcData->GetPcNum());

query.bindValue(1, pcData->GetPcName());

query.bindValue(2, pcData->GetPcType());

query.bindValue(3, pcData->GetIpAddress());

query.bindValue(4, pcData->GetPort());

query.bindValue(5, 0, QSql::Out);

bFlag = query.exec();

if (bFlag)

{

int pcID = query.boundValue(5).toInt();

if (pcID < 0)

{

bFlag = false;

}

else

{

pcData->SetPcID(pcID);

bFlag = true;

}

}

else

{

QString str = query.lastError().text();

QMessageBox::critical(0, QObject::tr("Error"),QObject::tr("%1").arg(str));

}

return bFlag;

}

也存在一些未知的疑問……這里的輸出參數必須設置在存儲過程的最后一個參數中返回,而且根據Server SQL中的要求必須有output的修飾,這樣才可確保成功。

疑問1:如果存儲過程想以返回值的形式返回,使用Qt如何調用。

疑問2:為何存儲過程的輸出參數必須設置才最后一個參數才可獲取到正確的輸出值,譬如想在第一個參數中返回,如何解決。

疑問3:有些存儲過程有多個輸出參數,但本人測試Qt只能以一個輸出參數形式(設置為最后一個參數)調用……這事讓我著實頭疼!整的我其他的輸出參數是在執著SQL語句查出來……

最近貌似挺貪玩....要收斂收斂了!嘿嘿!上述問題如果有人可以解答,小的十分感激,彼此交流,相互學習!

http://cool.worm.blog.163.com/blog/static/6433900620091018103220702/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529230.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529230.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529230.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pandas mysql index_Pandas從入門到精通(3)- Pandas多級索引MultiIndex

首先了解一下什么是多級索引&#xff0c;以及它的作用&#xff0c;為什么要有這個玩意。多級索引也稱為層次化索引(hierarchical indexing)&#xff0c;是指數據在一個軸上(行或者列)擁有多個(兩個以上)索引級別。之所以引入多級索引&#xff0c;在于它可以使用戶能以低維度形式…

tensorflow 啟動多個session_Tensorflow源碼解析7 -- TensorFlow分布式運行時

1 概述TensorFlow架構設計精巧&#xff0c;在后端運行時這一層&#xff0c;除了提供本地運行時外&#xff0c;還提供了分布式運行時。通過分布式訓練&#xff0c;在多臺機器上并行執行&#xff0c;大大提高了訓練速度。前端用戶通過session.run()啟動系統執行時&#xff0c;tar…

shell swt 樣式_SWT之路:SWT圖像顯示

簡明現代魔法 -> Java編程語言 -> SWT之路&#xff1a;SWT圖像顯示SWT之路&#xff1a;SWT圖像顯示2009-10-03程序演示還是先用SWT Desiner創建界面程序。然后創建一個Display對象和Image對象&#xff0c;和一個GC對象。類org.eclipse.swt.graphics.GC是一個封裝了所有可…

swool tcp mysql_swoole/mysql(異步)

# 異步Swoole\Mysql**(要求Workerman版本>3.3.6)**## 注意:此組件由swoole底層提供&#xff0c;由C語言編寫&#xff0c;具有超高性能。## 安裝&#xff1a;安裝有swoole擴展即可## 示例&#xff1a;phprequire_once ../Autoloader.php;use Workerman\Worker;use \Swoole\My…

xamarin和mysql_Xamarin.Android 使用 SQLiteOpenHelper 進行數據庫操作

一、前言在手機中進行網絡連接不僅是耗時也是耗電的&#xff0c;而耗電卻是致命的。所以我們就需要數據庫幫助我們存儲離線數據&#xff0c;以便在用戶未使用網絡的情況下也可以能夠使用應用的部分功能&#xff0c;而在需要網絡連接的功能上采用提示方式&#xff0c;讓用戶決定…

python 絕對值誤差小于10-6_Python 被低估了的 10 個小技巧

hi&#xff0c;各位朋友們&#xff0c;小帥b回來啦&#xff0c;幾日不見&#xff0c;想我了么&#xff1f;今天給大家分享幾個我認為不錯的 Python 小技巧&#xff0c;有些可能被你低估了喲&#xff0c;get 起來&#xff01;那么接下來就是&#xff1a;學習 Python 的正確姿勢俗…

java bean驗證_javaBean--登錄驗證

packagecom.JAVABean;importjava.util.HashMap;importjava.util.Map;publiccla***egister{privateStringname;privateStringage;privateStringemail;privateMaperrorsnull;//聲明一個保存全部錯誤信息的map集合publicRegister(){//在構造方法中初始化屬性this.name""…

java讀取src xml文件路徑_Java獲取路徑方法相對路徑讀取xml文件方法

(1)、request.getRealPath("/");//不推薦使用獲取工程的根路徑(2)、request.getRealPath(request.getRequestURI());//獲取jsp的路徑&#xff0c;這個方法比較好用&#xff0c;可以直接在servlet和jsp中使用(3)、request.getSession().getServletContext().getRealPa…

釋放tcp連接的命令是_最實用的6個網絡命令,網絡故障不求人

很多弱電工程師朋友在項目中經常遇到一些網絡故障&#xff0c;需要通過一些一些命令去檢測、定位故障點&#xff0c;通過使用網絡命令&#xff0c;故障解決的工作取得了事半功倍的效果。下面就一起溫故而知新吧&#xff01;一、ping命令&#xff08;因特網包探索器&#xff09;…

airpods2怎么查正品 ios11系統_拼多多AirPods2開箱評測,4種辦法教你驗真假,10個AirPods技巧教你玩...

大家好&#xff0c;Apple今天給大家分享一下拼多多上車AirPods 2無線充電盒版的經驗&#xff0c;順便整理了一波AirPods使用技巧&#xff0c;希望你用得上。入手理由自從去年10月份入手了iPhone XR&#xff0c;其實就挺想入款無線耳機的&#xff0c;所以一直在等AirPods升級換代…

java中for break的用法_java break語句的使用方法

在switch語中,break語句用來終止switch語句的執行。使程序 switch語句后的第一個語句 開始執行。在Java中,可以為每個代碼塊加一個括號,一個代碼塊通常 用大括號{}括起來的一段 代碼。加標號的格式break語句有兩種形式&#xff1a;無標簽和有標簽。無標簽的break語句用來跳出單…

windows文件保護_Windows系統下媲美時間機器的系統備份工具,統統免費

Windows和macOS系統誰更美&#xff1f;不同的人有不同的見解。但體驗過macOS之后很多電腦玩家會感嘆&#xff0c;TimeMachine時間機器太好用了&#xff0c;Windows下有沒有同類功能呢&#xff1f;TimeMachine提供了全盤完整備份、增量備份、文件歷史版本等功能。它們在Windows …

JAVA結課_一點心情,寫java結課考試之前

突然發現&#xff0c;已經好久沒有上來寫blog了&#xff0c;本來還以為能夠天天寫&#xff0c;后來發現&#xff0c;確是心有余力而不足啊。學期進入中段&#xff0c;課業慢慢多了&#xff0c;各種各樣的事情也接踵而來了。本學期的java課程也已經結課了&#xff0c;8周32個學時…

sql怎么撤回update_騰訊SQL“現役運動員”給你的實踐小技巧

引言SQL的全稱是Structured Query Language(結構化查詢語言)&#xff0c;是一種古老而簡潔的程序設計語言。看似平平無奇&#xff0c;一直被各種吐槽&#xff0c;但卻有著眾多語言所難得的漫長壽命&#xff0c;并展現出極好的拓展性&#xff0c;在不同時期衍生出不同的子語言。…

mysql 同一帳號多次登錄_freeradius2.1.3 防止用戶帳號重復登錄

freeradius2.1.3 防止用戶帳號重復登錄一、修改 etc/raddb/sites-enabled 目錄中的default 及inner-tunnel 這兩個文件中的# Session database, used for checking Simultaneous-Use. Either the radutmp# or rlm_sql module can handle this.# The rlm_sql module is *much…

小程序input wxss_19. 教你零基礎搭建小程序:wxss-尺寸單位

這章以后的四章都是介紹小程序樣式文件——wxss 的使用&#xff0c;分為以下三個部分一、尺寸方案二、樣式導入三、選擇器這章先來講wxss的尺寸單位—— rpxwxss的定義&#xff1a;WXSS( WeiXin Style Sheets )是?套樣式語言&#xff0c;用于描述 WXML 的組件樣式。與 CSS 相比…

java 最優算法_java 問題 求個最優算法

不知道是不是你要的package test;import java.util.Scanner;public class Number {/*** param args*/public static void main(String[] args) {int count 15;int val 5;Scanner input new Scanner(System.in);System.out.print("請輸入開始數&#xff1a;");int …

某一個接口403 其他接口可以調通_Neo的務實外設指南 篇三十六:一個就夠,65W快充+C口混插+最多6個設備 - 飛利浦65W摩天輪插座_插座...

2020-10-26 15:29:0623點贊23收藏2評論嗨&#xff0c;大家好&#xff01;我是沈少&#xff01;之前曬雷電3擴展塢的時候&#xff0c;已經有小伙伴注意到我用來提供PD充電的是一個很小巧的魔方插座。也有朋友私下提醒我&#xff0c;這類產品雖然支持PD快充協議&#xff0c;但一般…

linux java 獲取路徑怎么寫_linux中java獲取路徑怎么寫?

linux中java獲取路徑怎么寫&#xff1f;在Unix/Linux中&#xff0c;路徑的分隔采用正斜"/"&#xff0c;比如"cd /home/java"。在java的代碼開發中 是代表轉義字符。相對路徑和絕對路徑. 指的是當前目錄.. 指的是當前目錄的上一級目錄./book表示當前目錄下的…

layerconfirm 自動關閉問題 沒有阻塞問題_微信新版本自動更新?趕緊關閉這個功能...

前不久安卓用戶也迎來了微信新版本的更新不少伙伴驚呼“猝不及防&#xff0c;一覺醒來發現微信自動更新了”一時間還沖上了話題的熱搜榜究竟是怎么肥事&#xff1f;小移了解到&#xff1a;原來是因為部分用戶設置了“微信自動更新”那么問題來了&#xff0c;如何關閉微信自動更…