在最近的项目中我想建立一个EFDBfirst的模型但是失败了,生成的edmx中没有实体类和表结构,到处需求解决方案,未果。

问题请见:https://q.cnblogs.com/q/102743/

后来使用本文写的这个方法

///

1.在sqlserver中建立存储过程

在一个database中展开Programmability,展开Stored Procedures,右击New一个Stroed Procedure

在Query中会出现如下Code:

-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters
-- command (Ctrl-Shift-M) to fill in the parameter
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>//下面要添加名字
-- =============================================
CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName>      -- Add the parameters for the stored procedure here//添加参数<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, <@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN-- SET NOCOUNT ON added to prevent extra result sets from-- interfering with SELECT statements.SET NOCOUNT ON;-- Insert statements for procedure here//添加sql语句SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END
GO

根据提示添加所需参数和sql语句,在上面代码中已经用中文标注位置

给个小demo:

添加如下代码(由于项目原因隐掉了数据库名和表名,见谅)

USE [xxx]
GO
/****** Object:  StoredProcedure [dbo].[GetPluralProject]    Script Date: 1/5/2018 1:39:18 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[GetPluralProject]--这边是名字-- Add the parameters for the stored procedure here//参数@Language nvarchar(20)
AS
BEGIN-- SET NOCOUNT ON added to prevent extra result sets from-- interfering with SELECT statements.SET NOCOUNT ON;-- Insert statements for procedure here//sql语句SELECT distinct trans.[ProjectName] as ProjectNameFROM [xxx].[dbo].[xxx] transWhere trans.string like '%plural,%'
END

然后运行一下就好了,在刚才打开的目录下会出现你建好的存储过程

在当前数据库下新建一个Query(也可以use当前数据库,不然找不到,因为这个存储过程毕竟是存在当前数据库下的),sql语句如下:

exec GetPluralProject ''

运行,结果就出来了

2.现在要用C#代码来调用这个存储过程,并给它传参数

我这边有个写好的DbHelper.cs文件,这是需要用到的,下载路径:https://pan.baidu.com/s/1bpLfw7t

在Models中添加这个文件

以下是该文件片段(咱们需要用到的,不需要修改什么,贴出来看看)

 /// <summary>/// Executes the stored procedure, and return DataTable/// </summary>/// <param name="paraValues"></param>/// <returns></returns>/// public DataTable ExecuteDataTable(string ProName, params object[] paraValues)//存储过程名字,参数{SqlCommand cmd = CreateSqlCommand(ProName);try{this.DeriveParameters(cmd);this.AssignParameterValues(cmd, paraValues);SqlDataAdapter adapter = new SqlDataAdapter(cmd);DataTable dataTable = new DataTable();adapter.Fill(dataTable);return dataTable;}catch{throw;}}

好我们来调用这个函数,我是在webapi中用到的,所以写在controller中,可以看上一篇博客

代码如下:

using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using xxxService.Models;namespace xxxService.Controllers
{public class ProjectsController : ApiController{[CrossSite]public DataTable Get(){DbHelper DBH = new DbHelper();DataTable result = DBH.ExecuteDataTable("GetPluralProject", "");return result;}}
}

这里没有写到怎么定义参数补充下:

 object[] Params = new object[2];Params[0] = ProjectName;Params[1] = CultureName;DbHelper DBH = new DbHelper();DataTable result = DBH.ExecuteDataTable("xxx", Params);return result;

调用到这个函数后就得到了数据

我是用ajax调用api以json的形式返回的这个数据,用jquery处理的,还挺方便的

在C#中怎么处理还没怎么研究,但是应该不难,数据在Rows下面Results View里面

转载于:https://www.cnblogs.com/yangsirc/p/8203732.html

sqlserver 存储过程 C#调用 实现从数据库Get数据相关推荐

  1. Python调用阿里云数据库监控数据

    概述 基于Python 3.6.0 实现 抓取公司云数据库监控数据 存入本地数据库 centos定时任务 每分钟执行一次 引入SDK # 安装Python SDK 包 pip install aliy ...

  2. python获取数据库的存储过程_python远程调用sqlserver存储过程记录

    开发中需要python远程调用sqlserver存储过程.搜索了网上有两种方式,pymssql和pyodbc.开始采用第一种方式开发,不过无法拿到存储过程中的返回数据,后采用pyodbc开发,当然存储 ...

  3. SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)...

    存储过程有三种返回: 1.   用return返回数字型数据 2.   用返回参数返回结果,可以返回各种数据类型(通过游标来循环查询结果每一行) 3.   直接在存储过程中用select返回结果集,可 ...

  4. PHP写sqlserver事务,php调用sqlserver存储过程使用事务处理

    第一次编写 sqlserver存储过程并在php里调用,把脑瓜都整大了,奋战了一天多最后还是搞定了. 实现功能:在 sqlserver里面实现事务处理,保证数据库操作安全: 接收sqlserver存储 ...

  5. 存储过程调用不同数据库的数据

    存储过程调用不同数据库的数据 在存储过程调用不同数据库的数据该如何做,比如在存储过程名为AAA的存储过程里面调用数据库为hudu1,hudu2,hudu3里面的数据来统计? 在同一台数据库服务器上:  ...

  6. java调用存储过程sqlserver_Java调用SqlServer存储过程怎么实现 | 学步园

    在使用Java开发时,经常会遇到调用SqlServer存储过程的问题.下面学步园小编来讲解下Java调用SqlServer存储过程怎么实现? Java调用SqlServer存储过程怎么实现 1.数据库 ...

  7. JDBC对MySQL数据库存储过程的调用

    一.MySQL数据库存储过程: 1.什么是存储过程 存储过程(英文:Stored Procedure)是在大型数据库系统中,为了完毕特定功能而编写的一组的SQL语句集.存储过程经编译存储在数据库中.用 ...

  8. 存储过程系列之存储过程具体操作过程及sql数据库调用

    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. 存 ...

  9. mysql数据库存储过程及调用方法

    mysql数据库存储过程及调用方法 mysql5.0以后就支持存储过程了,目前mysql的6.0Alpha版也已经推出.6.0不仅支持大型数据库如oracle等的绝大部分功 能,如存储过程.视图.触发 ...

最新文章

  1. git config --global写到哪里?
  2. 5-1rquests模拟登陆知乎之httpcode
  3. 去中心化钱包CoinU下载教程(如何下载C)
  4. 如何通过shell脚本操作MongoDB
  5. Apache优化——日志管理
  6. mysql二阶段提交有什么问题_MySQL的事务两阶段提交的技术有什么意义?
  7. 信息学奥赛一本通 1017:浮点型数据类型存储空间大小 | OpenJudge NOI 1.2 02
  8. sqlmap源码阅读_setPreprocessFunctions和_setPostprocessFunctions
  9. python读取视频占用内存太大_Python 读取大文件内存占用检测示例
  10. 初级web前端必会知识点:HTML部分,看看你都会吗?
  11. 新版office365介绍
  12. 戏说前端 JavaScript 之『防抖节流』基础知识
  13. 博弈-Green Hackenbush(无向图删边)
  14. 架构师都应该知道的康威定律
  15. java实战——照片编辑器
  16. android 画扇形进度条,css绘制扇形进度条
  17. dbus-1 not met问题
  18. Ajax和Json使用入门
  19. js中text方法是啥意识_JS中Text节点总结
  20. 一级计算机无法正常评分,计算机一级评分标准

热门文章

  1. 噪音声压和声功率的区别_南昌汽车隔音,深入了解汽车噪音的来源、危害以及解决方案...
  2. 框架下载_25. Scrapy 框架-下载中间件Middleware
  3. globalmapper如何选取图像上的点_OpenCV 进阶应用,用编程手段搞定图像处理
  4. win7计算机个性化设置,笔记本电脑windows7系统如何用好电脑个性化设置
  5. oracle dbwr trace文件,ORA-01157: cannot identify/lock data file 19 - see DBWR trace file问题处理...
  6. python getopt.getopt_python 参数格式化getopt
  7. java springmvc权限校验_详解Spring MVC使用Filter实现登录及权限验证判断
  8. chrome 占用大量内存直到网页崩溃_Chrome吃内存太夸张!几招解决Chrome占内存硬伤...
  9. 网管型工业交换机如何提高网路流量过滤?
  10. 选购光纤交换机时需要注意光模块的哪些配置?