qt調用sql server存儲過程並獲取output參數

来源:http://www.cnblogs.com/roadbike/archive/2016/06/22/5608642.html
-Advertisement-
Play Games

最近新做的一個項目需要使用qt5連接另一臺機器上的sql server,雖然網上已有類似文章,但還是有些其中很少提及的問題,故在這裡彙總下: qt連接sql server可以參考這篇文章: 《Qt 使用ODBC driver 連接SQL Server》 如果是連接另一臺機器的sql server就不 ...


最近新做的一個項目需要使用qt5連接另一臺機器上的sql server,雖然網上已有類似文章,但還是有些其中很少提及的問題,故在這裡彙總下:

  qt連接sql server可以參考這篇文章:

《Qt 使用ODBC driver 連接SQL Server》

如果是連接另一臺機器的sql server就不用執行第一步“開啟ODBC驅動”了,另外指定資料庫用戶名和密碼可以使用Uid和Pwd,即原文dsn參數可以這樣寫:

QString dsn = QString("Driver={SQL Server};Server=%1;Database=%2;Uid=%3;Pwd=%4").arg(serverName).arg(dbName).arg(userName).arg(password);

 而且“Trusted_Connection=yes”也要刪除,否則會報錯。

 

  關於如何調用存儲過程可以參考如下文章:

《Qt調用Server SQL中的存儲過程》

其中QSqlQuery::prepare()的參數怎麼寫,其實只要在SQL Server Management Studio中先調用下存儲過程就會自動生成調用代碼,EXEC那部分再精簡下即可直接使用了。

推薦使用Oracle格式占位符即冒號方式如:argname,相比ODBC格式的?占位符方便很多。另外如果是多個output參數,可以用這樣寫:

query.prepare("exec PINSERTPC :arg1 output, :arg2 output");

 

最後還有一個需要註意的地方,sql server需要在所有結果集都被遍歷後才能通過query.boundValue獲取output參數的值,未遍歷前獲取的其實仍是query.bindValue時的預設值,具體可以參見bool QSqlQuery::nextResult()的介紹:

Note that some databases, i.e. Microsoft SQL Server, requires non-scrollable cursors when working with multiple result sets. Some databases may execute all statements at once while others may delay the execution until the result set is actually accessed, and some databases may have restrictions on which statements are allowed to be used in a SQL batch.

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在導入文件的時候,Python只搜索當前腳本所在的目錄,載入(entry point)入口腳本運行目錄和sys.path中包含的路徑例如包的安裝地址。所以如果要在當前腳本引用其他文件,除了將文件放在和腳本同一目錄下,還有以下幾種方法, 1. 將文件所在位置添加到sys.path中 2. 在文件目錄下 ...
  • 這是ZK學習筆記的下篇, 主要希望可以分享一些 ZK 的應用以及其應用原理 我本人的學習告一段落, 不過還遺留了一些ZK相關的任務開發和性能測試的任務, 留待以後完成之後再通過其他文章來進行分享了 ZK應用場景: 1. 一個服務多台機器, 快速修改配置 2. 服務的消費者如何動態知道服務有多少個提供 ...
  • 因為 PHP 那“集百家之長”的蛋疼語法,加上社區氛圍不好,很多人對新版本,新特征並無興趣。本文將會介紹自 PHP5.2 起,直至 PHP5.6 中增加的新特征 本文目錄:PHP5.2 以前:autoload, PDO 和 MySQLi, 類型約束PHP5.2:JSON 支持PHP5.3:棄用的功能 ...
  • 這篇文章主要介紹了C++實現郵件群發的方法,較為詳細的分析了郵件發送的原理與C++相關實現技巧,非常具有實用價值,需要的朋友可以參考下 本文實例講述了C++實現郵件群發的方法。分享給大家供大家參考。具體如下:關於生成隨機QQ郵箱不精確的問題,在之後版本打算另寫一個採集器插件進行帳號採集,所以,這個軟 ...
  • 今天又看了下Hangout的源碼,一般來說一個開源項目有好幾種啟動方式——比如可以從命令行啟動,也可以從web端啟動。今天就看看如何設計命令行啟動... Apache Commons CLI Apache Commons CLI是開源的命令行解析工具,它可以幫助開發者快速構建啟動命令,並且幫助你組織 ...
  • 在牛客網上刷題的時候看見這麼一道題 這很明顯是對我對父子執行流的嚴峻考察,很好,我喜歡,然後我錯了。。。騰訊實習生招聘的時候線上筆試題也有類似的題目,不過是把-換成可hello world而已,可見還是蠻重要的。這種題目只要畫一下圖很快就能理解了 顯而易見的6次 貼出結果 那麼接下來來個升級版的 執 ...
  • 在項目中我們有時候會為集合類型設定一些預設的值,使用spring後,我們可以通過配置文件的配置,用setter方式為對象的集合屬性提供一些預設值,下麵就是一個簡單的例子。 首先我們創建了一個名為Collection的類,這個類中包含四中基本的集合屬性,實現屬性的set方法和覆蓋toString()方 ...
  • 參考http://blog.csdn.net/yaopeng_2005/article/details/6935235 對小鵬_加油的代碼進行了部分修改,並加入了自己的文檔註釋 定義全局變數,以及主函數main 初始化變數Init函數 銀行家演算法Bank函數 安全性演算法Safe函數 顯示showda ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...