qt调用sql server存储过程并获取output参数
最近新做的一个项目需要使用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”也要删除,否则会报错。
关于如何调用存储过程可以参考如下文章:
其中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.
qt调用sql server存储过程并获取output参数的更多相关文章
- Yii2.0调用sql server存储过程并获取返回值
1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...
- SQL Server存储过程Return、output参数及使用技巧
SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...
- VS中调用SQL SERVER存储过程
存储过程是经过编译的,永久保存在数据中的一组SQL语句,通过创建和使用存储过程能够提高程序的重用性和扩展性,为程序提供模块化的功能,还有利于对程序的维护和管理.以下就详谈一下,VB.NET怎样调 ...
- java 调用 sql server存储过程
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...
- Java的jdbc调用SQL Server存储过程Bug201906131119
SQL Server数据库存储过程,一个查询使用动态sql,另一个不使用动态sql,这种情况,jdbc可能获取不到实际查询数据,虽然数据库中执行没问题. 解决方法,都使用静态sql,或都使用动态sql ...
- PHP调用SQL Server存储过程
一.安装SQL Server Driver for PHP 在微软官网上发现了这个东西,他提供了一套PHP对MS2005/2008操作的全新函数库,并且支持UTF8,作为PHP的扩展运行.看来 ...
- Java调用SQL Server存储过程
1.调用普通存储过程(1)创建存储过程CREATE Procedure [dbo].[GetContactListByName] /*根据联系人姓名获取联系人信息*/@Name nvarchar(5 ...
- laravel调用sql server存储过程并取得ReturnValue
alter proc [dbo].[aaa]( @AgencyID int,--代理商ID @AdminID int --结算操作人ID(管理员ID))asbegin select ...
- Java的jdbc调用SQL Server存储过程Bug201906131120
如果要查询结果,第一行使用set nocount on;可能可以解决问题.
随机推荐
- Java NIO系列教程(七) FileChannel
Java NIO中的FileChannel是一个连接到文件的通道.可以通过文件通道读写文件. FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下. 打开FileChannel 在使用F ...
- MySQL 5.7 新备份工具mysqlpump 使用说明 - 运维小结
之前详细介绍了Mysqldump备份工具使用,下面说下MySQL5.7之后新添加的备份工具mysqlpump.mysqlpump是mysqldump的一个衍生,mysqldump备份功能这里就不多说了 ...
- linux编译找不到aprt apr-util
Linux很多地方编译的时候都会用到apr 如果找不到apr就会报错 configure: WARNING: APR not found The Apache Portable Runtime (AP ...
- 字符串匹配的KMP算法-16张图片看明白
作者: 阮一峰 日期: 2013年5月 1日 字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另 ...
- localStorage存储对象,sessionStorage存储数组对象
前言 最近在用angular做商城购物车的功能模块,因为angular的watch监听,数据只要发生变化就能很方便的自动渲染页面.但随即出现的问题是,之前用户操作的样式都会被重置掉. 例如我勾选了几个 ...
- jQuery.Ajax()执行WCF Service的方法
Insus.NET有在上一篇<ASP.NET MVC呼叫WCF Service的方法>http://www.cnblogs.com/insus/p/3720547.html 直接呼叫WCF ...
- 电脑分辨率与pc端页面布局
在电脑设置中选择:控制面板->外观和个性化->显示 可以设置页面的显示比例,原因是在1920*1080的分辨率下页面的图标就会变得比较小,方便用户看,这个功能就是把页面内容变大(默认是中等 ...
- Java基础——String类(二)
今天做了几道String常见操作.先来几个代码实例: 例一:此方法,仅把字符串前后出现的空格去掉了,中间部分不会. class TestTrim { public static void main(S ...
- class文件打包成jar
电脑左下角“开始”——“运行”——输入cmd——cd+空格+clss文件所在文件夹的路径——jar+空格+-cf+空格+“jar包的名字”.jar+空格+*.class.好了...
- 如何在idea中设置Tomcat虚拟路径
设置项目的根路径: 设置指定文件的在Tomcat中的虚拟路径: 代码: String fileName = MyFileUtil.getFileName(uploadFileName); File f ...