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.mzph.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;如何关闭微信自动更…