(1)简单的无参数存储过程
create procedure ExpOne
as
select top 10 * from Corp
go

C#调用此存储过程
        SqlConnection con = new SqlConnection(connstr);
        string procedurestr = "存储过程名";
        SqlCommand cmd = new SqlCommand(procedurestr, con);
        con.Open();
        cmd.CommandType = CommandType.StoredProcedure;
        i = cmd.ExecuteNonQuery();//这里是返回一个最后一次执行所影响的行数.
                                  //如果行数没有受影响,返回 -1.
        con.Close();

(2)通过存储过程使用隐式内联参数
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER procedure [dbo].[GetCorp]
@id int
as
select * from Corp where id=@id

C#中调用上面的存储过程
        SqlConnection con = new SqlConnection(connstr);  
        string sqltext = "存储过程名";
        SqlCommand cmd = new SqlCommand(sqltext, con);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter p = new SqlParameter("@id", DbType.Int32);
        p.Direction = ParameterDirection.Input;
        p.Value = 1739;
        cmd.Parameters.Add(p);
        con.Open();
        SqlDataReader sdr = cmd.ExecuteReader();
        if (sdr.Read())
        {
            rtn = sdr["UserName"].ToString() + sdr["CorpName"].ToString() + sdr["Intro"].ToString();
       }
        sdr.Close();
        con.Close();
从上面代码可以看出,但参数个数非常多的时候其实也是非常麻烦的,目前还没有找到好的解决办法,大家可以使用参数数组,如果有更好的办法欢迎一起探讨.

SqlParameter[] p ={ new SqlParameter("@id", SqlDbType.Int, 4), new SqlParameter("@UserName", SqlDbType.NVarChar, 50) };
        p[0].Value = 1739;
        p[0].Direction = ParameterDirection.Input;
        p[1].Direction = ParameterDirection.Input;

foreach (SqlParameter pm in p)
       {
           cmd.Parameters.Add(pm);
        }

(3)通过存储过程调用显式的参数
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER procedure [dbo].[GetMyCorp]
@id int,@UserName nvarchar(50) output
as
select @UserName=UserName from t_jc_corp where id=@id
在asp.net 中调用该存储过程 得到输出参数 @UserName

SqlConnection con = new SqlConnection(connstr);
        con.Open();
        string procedurename = "GetMyCorp";
        SqlCommand cmd = new SqlCommand(procedurename, con);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter p1 = new SqlParameter();
        p1 = cmd.Parameters.Add("@id",SqlDbType.Int,4);
        p1.Direction = ParameterDirection.Input;
        p1.Value = 1739;

SqlParameter p2 = new SqlParameter();
        p2 = cmd.Parameters.Add("@UserName", SqlDbType.NVarChar, 50);
        p2.Direction = ParameterDirection.Output;

SqlDataReader sdr = cmd.ExecuteReader();
        sdr.Close();
        rtn = p2.Value.ToString();

asp.net 常用的几种调用存储过程的方法的更多相关文章

  1. jdbc调用存储过程的方法

    ----------------------------jdbc调用存储过程的方法---------------------------------------------------private ...

  2. ASP.Net:Javascript 通过PageMethods 调用后端WebMethod方法 + 多线程数据处理 示例

    ASP.Net:Javascript 通过PageMethods 调用后端WebMethod方法 + 多线程数据处理 示例 2012年04月27日 16:59:16 奋斗的小壁虎 阅读数:4500   ...

  3. entity framework core 调用存储过程和方法

    目前EF Core调用存储过程,限制很多,比如返回结果必须是定义好的DbSet<>等等.这里用一种曲线救国的方式,自定义两个方法,用原始ado.net解决问题.以MySql数据库为例,代码 ...

  4. 【Java EE 学习 29 下】【JDBC编程中操作Oracle数据库】【调用存储过程的方法】

    疑问:怎样判断存储过程执行之后返回值是否为空. 一.连接oracle数据库 1.需要的jar包:在安装的oracle中就有,所以不需要到官网下载,我的oracle11g下:D:\app\kdyzm\p ...

  5. hibernate的update() 更新延迟或者无法更新,导致同个service调用存储过程执行方法不精确

    hibernate的update()方法无法更新,不报错 原因是hibernate的update方法操作的是缓存,可以flush下先. 设置缓存为false理论上也可. 在一个serivce方法里,执 ...

  6. (copy)赋值构造函数的4种调用时机or方法

    第一种调用方法: demo #include <iostream> using namespace std; class Text { public: Text() // 无参数构造函数 ...

  7. ASP.NET4.0中JavaScript脚本调用Web Service 方法

    环境:VS2019  .net 4.0 framework 根据教材使用ScriptManager在JavaScript中调用Web service 时,失败.现将过程和解决方法记录如下: 1.定义W ...

  8. VB调用存储过程 - CreateParameter 方法

    这次又转为VB6了.......  (┬_┬) ---------------------------------------------------------------------------- ...

  9. sqlserver 2008 存储过程调用存储过程或方法

    函数:拆分字符串,并返回一个table CREATE FUNCTION [dbo].[f_splitSTR](@s varchar(max), --待分拆的字符串@split varchar(10) ...

随机推荐

  1. cojs 西瓜 解题报告

    首先我们要知道pick公式 设二维平面内任意多边形面积为S 设多边形内部整点数为a 设多边形边界的整点数为b 则满足S=a+b/2-1 变形得a=S-b/2+1 由期望的线性性质我们把问题转化为 1. ...

  2. ios APP屏幕快照尺寸

    苹果上传APP审核需要上传APP屏幕快照,分别有3.5寸,4寸,4.7寸,5.5寸,ipad五种图片,对应尺寸大小: 3.5寸:横坚屏 640*960 或960*640 4寸:横坚屏 640*1036 ...

  3. 缓存初解(三)---Spring3.0基于注解的缓存配置+Ehcache和OScache

    本文将构建一个普通工程来说明spring注解缓存的使用方式,关于如何在web应用中使用注解缓存,请参见: Spring基于注解的缓存配置--web应用实例 一.简介 在spring的modules包中 ...

  4. Linux中断(interrupt)子系统

    Linux中断(interrupt)子系统之一:中断系统基本原理 Linux中断(interrupt)子系统之二:arch相关的硬件封装层 Linux中断(interrupt)子系统之三:中断流控处理 ...

  5. Orcle数据库查询练习复习:三

    一.题目 1.与“张三”同乡的男生姓名 select * from student where snativeplace=(select snativeplace from student where ...

  6. 如何禁用 radio ,设置为只读,不能选定

    如何禁用 radio ,设置为只读,不能选定 禁用 radio ,设置为只读,不能选定: <input name="gender" type="radio" ...

  7. tcp通信:多进程共享listen socket方式

    原文链接:http://blog.csdn.net/largetalk/article/details/7939080 看tornado源码多进程(process.py)那段,发现他的多进程模型和一般 ...

  8. UVa 1301 - Fishnet

    求出所有交点枚举每个四边形找最大面积即可. #include <cstdio> #include <cmath> #include <algorithm> usin ...

  9. 伪分布模式下使用java接口,访问hdfs

    package com.bq.pro; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import ...

  10. View的个得区域函数getHitRect,getDrawingRect,getLocalVisibleRect,getGlobalVisibleRect(*)

    注意: OnCreate()函数中 调用下面函数,结果全为0,要等UI控件都加载完了才能得到绘制时的值. getHitRect 以父控件的左上为原点,计算当前view在父控件的区域,不管父控件在屏幕的 ...