sql 存储过程调用

【转载】Qt调用Server SQL中的存储过程 Server SQL中的存储过程如下: CREATE procedure PINSERTPC @pcnum int, @pcname varchar(50), @pctype int, @ipaddress varchar(50), @port  int, @pcid  int outputas --declare @pcid intif exists (select * from COM 阅读详情

 

if exists(select * from sys.objects where name='checkUserName' and type='p')
drop proc checkUserName
go

create proc checkUserName
(
  @checkResult int output,
  @userName varchar(20),
  @userAge varchar(10)
  )

  as 
  if exists(select * from Student where Name=@userName and Age=@userAge)
  set @checkResult=1 --通过验证
  else if exists(select * from Student where Name=@userName)
  set @checkResult=2
  else
  set @checkResult=0

  return isnull(@checkResult,2)
  go

  declare @checkResult int --声明一个返回值的变量
  exec checkUserName @checkResult output, 'NEWID','3' --执行
  select case @checkResult --select
   
   when 1 then 'ok'
   when 0 then 'not exist'
   when 2 then 'pwd error'
   end as '验证结果'
// 数据库中创建的存储过程
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public static string connectionString = "data source=.\\sqlserver;initial catalog=;User ID=;Password=;";
        // 1. 初始化数据库连接
        SqlConnection conn = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand();
        private void button1_Click(object sender, EventArgs e)
        {
            cmd.Connection = conn;
            // 2. 打开数据库
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();

            }

            #region 调用存储过程方法一
            //Class1 sp = new Class1("checkUserName", connectionString);//类的对象
            //Object[] paraValues = new object[3];//注意,这里是存储过程中全部的参数,一共有三个,还要注意顺序啊,返回值是第一个,那么赋值时第一个参数就为空

            //paraValues[1] = this.textBox1.Text.Trim();//从第二个参数开始赋值
            //paraValues[2] = this.textBox2.Text.Trim();

            //sp.ExecProcOutput(out object[] output, 1, paraValues);//调用我们前面定义的方法,这里我就随便写了一个,能完成功能,大家改进
            //                                                      //object o = sp.ExecuteScalar(paraValues);//这个是查询的那个存储过程调用,很简单,不多说了
            //switch (Convert.ToInt32(output[0]))
            //{
            //    case 0:
            //        this.label1.Text = "用户不存在";
            //        break;
            //    case 1:
            //        this.label2.Text = "登录成功";
            //        break;
            //    case 2:
            //        this.label2.Text = "密码不正确";
            //        break;
            //    default:
            //        break;
            //}
            #endregion
            try
            {
                #region 方法二
                cmd.CommandText = "checkUserName";
                //cmd.CommandType = CommandType.StoredProcedure;
                //cmd.Parameters.Add("@userName", SqlDbType.VarChar);
                //cmd.Parameters["@userName"].Value = textBox1.Text.Trim();
                //cmd.Parameters.Add("@userAge", SqlDbType.VarChar);
                //cmd.Parameters["@userAge"].Value = textBox2.Text.Trim();
                //cmd.Parameters.Add("@checkResult", SqlDbType.Int);
                //cmd.Parameters["@checkResult"].Direction = ParameterDirection.Output;

                cmd.CommandType = CommandType.StoredProcedure;
                //cmd.Parameters.Add("@userName", SqlDbType.VarChar);
                // cmd.Parameters["@userName"].Value = textBox1.Text.Trim();
                //cmd.Parameters.Add("@userAge", SqlDbType.VarChar);
                //cmd.Parameters["@userAge"].Value = textBox2.Text.Trim();
                //cmd.Parameters.Add("@checkResult", SqlDbType.Int);

                cmd.Parameters.AddWithValue("@userName", this.textBox1.Text.Trim());
                cmd.Parameters.AddWithValue("@userAge", this.textBox2.Text.Trim());
                cmd.Parameters.AddWithValue("@checkResult", SqlDbType.Int);

                cmd.Parameters["@checkResult"].Direction = ParameterDirection.Output;
                int t = cmd.ExecuteNonQuery();
                switch (Convert.ToInt32(cmd.Parameters[2].Value))
                {
                    case 0:
                        this.label1.Text = "用户不存在";
                        break;
                    case 1:
                        this.label2.Text = "登录成功";
                        break;
                    case 2:
                        this.label2.Text = "密码不正确";
                        break;
                    default:
                        break;
                }
                cmd.Parameters.Clear();
                #endregion

            }
            catch (Exception ex)
            {
                string s = ex.ToString();
                throw;
            }
        } 
    }
}

 

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApp1
{
    public class Class1
    {
        //连接字符串
        private string connectionString;

        //存储过程名称
        private string storeProcedureName;

        public Class1(string connectionString)
        {
            this.connectionString = connectionString;
        }

        public Class1(string storeProcedureName, string conn)
        {
            this.connectionString = conn;
            this.storeProcedureName = storeProcedureName;
        }

        public string GetProcedureName
        {
            get { return storeProcedureName; }
            set { storeProcedureName = value; }
        }
        //// <summary>
        /// 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。
        /// </summary>
        /// <param name="paraValues">传递给存储过程的参数值列表。</param>
        /// <returns>结果集中第一行的第一列或空引用(如果结果集为空)。</returns>
        public object ExecuteScalar(params object[] paraValues)
        {

            using (SqlConnection connection = new SqlConnection(this.connectionString))
            {

                SqlCommand command = this.CreateSqlCommand(connection);

                try
                {
                    this.DeriveParameters(command);
                    this.AssignParameterValues(command, paraValues);
                    connection.Open();
                    object result = command.ExecuteScalar();
                    //string r = command.Parameters[1].Value.ToString();
                    return result;
                }
                catch
                {
                    throw;
                }
            }
        }


        public void ExecProcOutput(out object[] output, int outParaNum, params object[] paraValues)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                SqlCommand cmd = CreateSqlCommand(conn);
                output = new object[outParaNum];
                try
                {
                    DeriveParameters(cmd);
                    for(int i=0;i<cmd.Parameters.Count;i++)
                    {
                        var t = cmd.Parameters[i];
                    }
                    AssignParameterValues(cmd, paraValues);
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    for(int i=0;i<outParaNum;i++)
                    {
                        output[i] = cmd.Parameters[i].Value;
                    }
                }
                catch(Exception ex)
                {
                    string s = ex.ToString();
                    throw;
                }
            }
        }
        //
        //// <summary>
        /// 执行存储过程,返回 System.Data.DataTable。
        /// </summary>
        /// <param name="paraValues">传递给存储过程的参数值列表。</param>
        /// <returns>包含查询结果的 System.Data.DataTable。</returns>
        public DataTable ExecuteDataTable(params object[] paraValues)
        {

            using (SqlConnection connection = new SqlConnection(this.connectionString))
            {

                SqlCommand command = this.CreateSqlCommand(connection);

                try
                {
                    this.DeriveParameters(command);
                    this.AssignParameterValues(command, paraValues);
                    SqlDataAdapter adapter = new SqlDataAdapter(command);
                    DataTable dataTable = new DataTable();
                    adapter.Fill(dataTable);
                    return dataTable;
                }
                catch
                {
                    throw;
                }
            }
        }

        public void ExecuteFillDataTable(DataTable dataTable,params object[] paraValues)
        {
            using(SqlConnection conn=new SqlConnection(connectionString))
            {
                SqlCommand cmd = CreateSqlCommand(conn);

                try
                {
                    DeriveParameters(cmd);
                    AssignParameterValues(cmd, paraValues);
                    conn.Open();
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    adapter.Fill(dataTable);

                }
                catch (Exception)
                {

                    throw;
                }

            }
        }

        /// <summary>
        ///  执行操作类(insert/delete/update)存储过程
        /// </summary>
        /// <param name="paraValues">传递给存储过程的参数列表</param>
        /// <returns>受影响的行数</returns>
        public int ExecuteNonQuery(params object[] paraValues)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                SqlCommand cmd = CreateSqlCommand(conn); //创建存储过程

                try
                {
                    DeriveParameters(cmd);
                    AssignParameterValues(cmd, paraValues);
                    conn.Open();

                    int affectedRowsCount = cmd.ExecuteNonQuery();
                    return affectedRowsCount;

                }
                catch
                {
                    throw;
                }
            }
        }

        public SqlDataReader ExecuteDataReader(params object[] paraValues)
        {
            using (SqlConnection connection = new SqlConnection(this.connectionString))
            {

                SqlCommand command = this.CreateSqlCommand(connection);

                try
                {
                    this.DeriveParameters(command);
                    this.AssignParameterValues(command, paraValues);
                    connection.Open();
                    return command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                }
                catch
                {
                    throw;
                }

            }
        }

        /// <summary>
        /// 为指定的存储过程 赋值
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="paraValues"></param>
        private void AssignParameterValues(SqlCommand cmd, object[] paraValues)
        {
            if (paraValues != null)
            {
                if (cmd.Parameters.Count - 1 != paraValues.Length)
                {
                    throw new ArgumentException("the number of parameters does not match number of values for stored procedure.");
                }
            }
            for (int i = 0; i < paraValues.Length; i++)
            {
                cmd.Parameters[i + 1].Value = (paraValues[i] ?? DBNull.Value);

            }


        }

        /// <summary>
        /// 从指定存储过程检索信息
        /// </summary>
        /// <param name="cmd"></param>
        private void DeriveParameters(SqlCommand cmd)
        {
            try
            {
                cmd.Connection.Open();
                SqlCommandBuilder.DeriveParameters(cmd);
                cmd.Connection.Close();
            }
            catch
            {
                if (cmd.Connection != null)
                {
                    cmd.Connection.Close();
                }
                throw;
            }
        }

        private SqlCommand CreateSqlCommand(SqlConnection conn)
        {
            SqlCommand command = new SqlCommand(storeProcedureName, conn);
            command.CommandType = System.Data.CommandType.StoredProcedure;
            return command;
        }
    }
}

 

python调用sql server存储过程_python远程调用sqlserver存储过程记录 开发中需要python远程调用sqlserver存储过程。搜索了网上有两种方式,pymssql和pyodbc。开始采用第一种方式开发,不过无法拿到存储过程中的返回数据,后采用pyodbc开发,当然存储过程中返回数据并不是直接return返回,需要设定一个output类型的参数,然后在结束时设置该参数并select一把方可得到返回。网上也有另外一种思路,写个存储过程中间件调用目标存储过程避免每有返回... 阅读详情

相关推荐

SQL SERVER动态调用存储过程

最近开始用SQLSever,而且要用到动态调用存储过程,也就是说在存储过程中,调用“其他存储过程”,而且调用的“其他存储过程”根据条件不同,存储过程名字不同。做了一个小试验发现很简单。--------------------------主存储过程开始---------------------------------------------------CREATE PROCEDURE dbo

pts_ben的专栏 1076

MySQL学习笔记(十七)—— MySQL的存储过程和函数

文章目录存储过程和函数存储过程一、创建语法1,注意:二、调用语法三、删除存储过程四、查看存储过程的信息存储过程案例讲解一、创建存储过程实现传入用户名和密码,插入到admin表中二、创建存储过程实现传入女神编号,返回女神名称和女神电话三、创建存储存储过程或函数实现传入两个女神生日,返回大小四、创建存储过程或函数实现传入一个日期,格式化成xx年xx月xx日并返回五、创建存储过程或函数实现传入女神名称,返回:女神 and 男神 格式的字符串六、创建存储过程或函数,根据传入的条目数和起始索引,查询beauty表的

weixin_45417821的博客 997

MVC 调用SQL存储过程

1、首先在Web.Config文件中配置一个与数据库的连接connectionStrings 参数就不必说是什么意思了吧 2、采用存储过程mvc3的访问数据库的通用类 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data;

Donnie_ZhuXuGuang的专栏 3605

MySQL 存储过程,语法+示例,超详细!!

MySQL 存储过程,语法+示例,超详细!!

m0_62951223的博客 2760

C#中调用SQL存储过程的实战指南

存储过程是一组为了完成特定功能的SQL语句集,它被编译后存储在数据库中,可以通过指定的名称调用执行。存储过程可以接受输入参数,提供输出参数,返回执行状态,以实现复杂的数据操作和业务逻辑。存储过程中的每个参数都具有名称、数据类型和可选的方向。参数的方向指明了参数是仅用于输入(Input),还是既可输入也可输出(Output),或者仅用于存储过程返回的值(常见的SQL数据类型和.NET中的对应关系如下所示:SQL类型.NET类型INTInt32。

weixin_42579969的博客 1233

基于MATLAB的基本数字调制解调系统的设计

基于MATLAB的基本数字调制解调系统的设计一、摘要现代通信系统要求通信距离远、通信容量大、传输质量好,作为其关键技术之一的调制解调技术一直是人们研究的一个重要方向。本文以MATLAB为软件平台,充分利用其提供的通信工具箱和信号处理工具箱中的模块,对数字调制解调系统进行Simulink设计仿真,并且进行误差分析。调制与解调是通信系统中十分重要的一个环节,针对不同的信道环境选择不同的调制与解调方式可...

m0_55395440的博客 5549

SQL中调用存储过程

SQL中调用存储过程语句:callprocedure_name(); 注:调用时”()”是不可少的,无论是有参数还是无参数. 定义对数据库存储过程的调用时 1、无参数存储过程:{callprocedure_name} 2、仅有输入参数的存储过程:{callprocedure_name(?,?...)}。 这里?表示输入参数,创建存储过程时用in表示输入参数 3、仅有输出参数的存储过程:{...

无名小卒菜的博客 2万+

CODESYS Softmotion(一)功能介绍

一、CODESYS SoftMotion RTE SL产品 1.1 CODESYS Runtime SL 产品家族介绍 目前支持的主流厂商的硬件产品,让部署在上面的成为实时设备。 对于Windows系统,根据需求选择对应的Runtime: RTE极大的提高了实时性,适合进行运动控制,同时RTE还支持了多个主从站协议: 还可以选择可选的功能(Single License): RTE对硬件和系统有要求,如果你需要硬件功能,那么网卡会有最低要求。 1.2 RTE的下载和安装 在官网http://codes

Fishfishfishfishcat 2万+

sql存储过程的创建与调用

1、简单存储过程的创建和调用 //存储过程test1 create PROCEDURE test1() begin//开始 select * from cst_customer;//中间要做的操作 end//结束 //存储过程的调用 Call test1() 2、创建带参数的存储过程 create PROCEDURE test2(IN c_id BIGINT(20)) begin select * from cst_customer where cust_id = c_id; end call tes

hnh_blog的博客 5231

宇树GO2-YOLOv5在Jetson Orin上的部署避坑实践

本文详细记录了在宇树GO2四足机器人搭载的Jetson Orin平台上部署YOLOv5目标检测模型的完整实践过程。文章重点分享了从ARM架构认知、网络连接解决方案、Archiconda环境搭建、PyTorch版本精准匹配到依赖安装与性能验证的核心步骤与避坑指南,旨在帮助开发者高效完成边缘计算环境下的算法部署。

app77的博客 669

Eureka常见面试题总结

点击关注我的博客原文 Eureka是Netflix组件的一个子模块,也是核心模块之一。云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移(来源springcloud中文网的介绍:https://www.springcloud.cc/)。下图总结了Eureka服务端(以下简称服务端)与Eureka客户端(以下简称客户端)之间协同工作的流程: 流程说明:...

u012105931的博客 2万+

SQL 存储过程使用

学习资料记录

qq_54750179的博客 4413

用Python+OpenCV搞定线激光相机标定:从棋盘格到3D点云的保姆级实战

本文详细介绍了使用Python和OpenCV进行线激光相机标定的全流程实战,从硬件准备到3D点云重建。涵盖相机内参标定、激光平面方程拟合、三维重建等关键技术,提供完整的代码实现和工程优化建议,帮助开发者实现毫米级精度的工业检测和三维测量系统。

weixin_29227425的博客 283

SQL存储过程调用标量值函数,存储过程调用存储过程

一、存 储过程调用标量值函数 先建一个标量值函数,如 CREATE FUNCTION [dbo].[F_Num] ( @a nvarchar(50) ) RETURNS nvarchar(50) AS BEGIN declare @m nvarchar(50) select @m=@a+'aad' return @m END 接下来 在存储过程中可以直接如下调用: s

Jyson程序之路 5601

知识图谱开发实战:搭建上市公司知识图谱(二)

搭建上市公司知识图谱(二)学习目标1. 获取上市公司公开数据1.1 获取上市公司列表与行业信息1.2 代码展示2. 从网站爬取上市公司网页并存储为 HTML文件2.1 准备环境2.2 爬取上市公司公开信息3. 解析HTML文件,获取高管信息并存储为 csv 文件4. 设计知识图谱数据库4.1 实体4.2 关系4.3 属性4.4 特殊4.5 代码5. 知识图谱数据库查询实战5.1 实战:按照neo4j的数据格式,转换CSV文件5.2 实战:使用neo4j-admin 导入数据5.3 实战:使用neo4j-b

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 2094

【Zabbix实战之部署篇】Docker部署Zabbix+grafana监控平台

【Zabbix实战之部署篇】docker部署Zabbix+grafana监控平台

jks212454的博客 2577

java调用sql server存储过程_Java调用SQL Server存储过程

1、调用普通存储过程(1)创建存储过程CREATE Procedure [dbo].[GetContactListByName] /*根据联系人姓名获取联系人信息*/@Name nvarchar(50)Asbeginselect Contact.Id,Contact.Name,Phone,Email,QQ,GroupName from Contact,ContactGroupwhere Cont...

weixin_42499681的博客 2024

VS2019项目使用CGAL6.1配置教程详细步骤

在VS2019项目中使用CGAL详细步骤

插件开发 331

SQL用一个存储过程调用另一个存储过程

一、直接调用的例子:--建被调用存储过程Bcreate procedure B  @Sql nvarchar(500) = null,  @outpara nvarchar(500) outputasdeclare @sqlstr nvarchar(500)begin set @outpara = @Sqlend--建调用存储过程Acreate procedure A @Sql nvarc

878

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Labview调用SQL Server的存储过程

Labview调用SQL Server的存储过程 一、 关于labview连接本地或者远程SQL数据库的方法可以查看我的上一篇文章,链接地址:https://blog.youkuaiyun.com/weixin_43803752/article/details/121669519,这里不再赘述。本篇主要讨论labview如何实现对SQL 的存储过程的调用。 二、 这里简单举例说明一下SQL中存储过程的创建和执行 1、 在数据库里新建表,名为TableTest,添加列头MatchData、MachineNo、Result

weixin_43803752的博客 2813

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

python调用sql server存储过程_Python到SQL Server存储过程

我试图从Python代码调用sqlserver存储过程,使用sqlalchemy。我发现python代码不会引发错误,存储过程也不会执行。在样本代码:def SaveData(self, aScrapeResult):sql = "EXECUTE mc.SaveFundamentalDataCSV @pSource='%s',@pCountry='%s',@pOperator='%s',@pFro...

weixin_39552204的博客 1487

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SQL SERVER 用sql怎么调用存储过程

我整理的一些关于【存储过程】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/yOSbkR在SQL Server中,存储过程是一种可以封装一组SQL语句的编程方式,方便实现复杂的逻辑和数据操作。通过调用存储过程,可以提高代码的可重用性、简化代码管理,并提高性能。本篇文章将通过一...

weixin_40323417的博客 347

C#调用SQL Server存储过程

-- 建表 CREATE TABLE sale_report (      sale_date DATETIME NOT NULL ,      sale_item VARCHAR(2) NOT NULL ,      sale_money DECIMAL(10,2) NOT NULL,      PRIMARY KEY(sale_date, sale_item) ) go -

龙程宇轩 798

SQL存储过程调用另一个存储过程

偷师于吉普赛的歌。。。 直接上代码了 USE tempdb GO -- 定义中转表,结构与你需要输出的一致,但需要增加 sessionId 和 addTime, -- sessionId 防止并发时出现无法辨别的问题 -- addTime 记录插入时间,便于观察 IF OBJECT_ID('dbo.tmp_transfer1') IS NOT NULL DROP TABLE tmp_tran...

半雨微凉 2万+

在 SQL Server 的存储过程中调用 Com 组件

在 SQL Server 的存储过程中调用 Com 组件关键词:Sql Server在 SQL Server 的存储过程中调用 Com 组件/**  ***  豆腐制作 都是精品  http://www.asp888.net 豆腐技术站  如转载 请 注明出处  */    SQL server 的 T-Sql 语言的功能是 非常的强大,但是有个时候 也确实是有些限制和不方便,一天,豆腐想

snowguy的专栏 1002

SQL server 存储过程的建立和调用

SQL server 存储过程的建立和调用存储过程的建立和调用--1.1准备测试需要的数据库:test,数据表:物料表,采购表if not exists (select * from master.dbo.sysdatabases where name='test')create database testgouse testgo if object_i...

weixin_34315665的博客 465
上一篇: mysql,oracle,sql server中的默认事务隔离级别查看,更改
下一篇: Anti-CSRF and AJAX
Bill11YAng
博客等级 码龄14年 165粉丝 230原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值