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

在最近的项目中我想建立一个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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TIBCO BusinessWorks 6和Container Edition与BW5的比较

[本文已于一段时间前发布在TIBCO博客上 。 我还在适当的地方添加了有关BusinessWorks Container Edition&#xff08;BW CE&#xff09;的一些信息。 下面定义的大多数特性对于BW6和BW CE均适用。 TIBCO ActiveMatrix BusinessWorks 6&#xff08;BW6&#xff09;是一个现代化…

修改jwt过期时间_PostgreSQL如何修改用户过期时间

生产环境中&#xff0c;有时候需要设置一个有时效的临时帐户&#xff0c;供一段时间内&#xff0c;某些需要的使用&#xff0c;过期帐号自己禁用&#xff0c;但有时候因为更多的需求&#xff0c;需要对这种有过期时间的帐号进行延长过期时间&#xff0c;这时候就需要使用命令行…

vue使用echarts图表

https://www.jianshu.com/p/2894b781063b 1、安装 npm install echarts // npm install echarts --save2、引入 echarts import * as echarts from echarts;3、写一个div容器用来承载图表: <div id"teamLeader"></div>4、写一个方法&#xff0c;&am…

云计算入门

根据美国国家标准与技术研究院定义&#xff1a;云计算是一种按使用量付费的模式&#xff0c;这种模式提供可用的、便捷的、按需的网络访问&#xff0c; 进入可配置的计算资源共享池&#xff08;资源包括网络&#xff0c;服务器&#xff0c;存储&#xff0c;应用软件&#xff0c…

20180105随笔

过滤器的执行过程&#xff1a;// 目标资源执行前执行chain.doFilter(request, response);// 目标资源执行后执行文件上传的前提&#xff1a;1.表单的method方法必须是post2.表单的enctype类型必须是&#xff1a;multipart/form-data3.表单中input的上传输入域为&#xff1a;<…

怎么自定义字体_自定义字体@fontface的常见应用

前言font-face允许网页自带字体&#xff0c;从而消除对用户电脑字体的依赖。基本用法如下&#xff1a;font-face { font-family: "family-name"; /* 字体名 */ src: url("family-name.eot"); /* IE9 */ src: url("family-name.eot?#iefix&q…

vue项目中使用mock(一)

一&#xff0c;安装 npm install mockjs --save-dev npm install json5 --save-dev npm install axios --save 二&#xff0c;每个文件内容 目录&#xff1a; 流程&#xff1a; Home.vue执行getUserInforList() 调用main.js中全局变量$api 调用/utils/api下的getUserInfo…

快速搭建redis单机版和redis集群版

单机版 第一步&#xff1a;需要安装redis所需的C语言环境&#xff0c;若虚拟机联网&#xff0c;则执行 yum install gcc-c 第二步&#xff1a;redis的源码包上传到linux系统 第三步&#xff1a;解压缩redis tar zxf redis的压缩文件 第四步&#xff1a;编译 &#xff0c;进入…

使用RxJava和Completable并行执行阻止任务

借助RxJava 1.1.1中引入的Completable抽象&#xff0c;如何并行执行阻止“仅副作用”&#xff08;也称为void&#xff09;任务的并行执行变得更加容易。 “ 正如您可能已经注意到&#xff0c;阅读我的博客时&#xff0c;我主要专注于软件Craft.io和自动代码测试。 但是&#x…

svn 回退到指定版本无法提交_SVN终端演练-版本回退

1. 版本回退概念以及原因?概念: 是指将代码(本地代码或者服务器代码), 回退到之前记录的某一特定版本原因: 如果代码做错了, 想返回之前某个状态重做;2. 修改了,但未提交的情况下, 回退代码方案1: (大力推荐)svn revert (作用:返回到上次提交后版本对应的最原始的状态)方案2: …

vue-awesome-swiper缩略图无法联动的问题

一&#xff0c;安装 npm install vue-awesome-swiper --save // npm install vue-awesome-swiper3.x --save我安装的版本是 “swiper”: “^6.6.1”, “vue-awesome-swiper”: “^3.1.3”, 在使用vue-awesome-swiper组件的时候&#xff0c;缩略图无法和大图实现联动&#xff…

个人博客13

今天的任务依旧为美化界面。 昨天的任务为美化界面。 遇到的问题为页面的布局&#xff0c;以及颜色的搭配。转载于:https://www.cnblogs.com/qilin20/p/8232942.html

tcp wireshark 过滤syn_使用 WireShark 分析 TCP/IP 三次握手 和 四次挥手

TCP 三次握手 示意图Wireshark 抓包注意事项为了演示一个TCP三次握手建立连接的过程&#xff0c;我们通过 Chrome 访问一个网页。已知 HTTP 协议就是建立在TCP链接上的通过 Cmd 的 ping 命令获取 这个网站对应的 IP地址 183.136.236.13确定 这个IP 有一个非常重要的好处&#x…

Python 基础函数

1.输入输出函数 input() 打印输出的内容后&#xff0c;接收输入用户输入的内容&#xff0c;默认为“字符串”类型 print() 打印输出的内容 2.类型转换函数 int() 转为整数 str() 转为字符串 3.类型判断函数 string.isdigit() 判断string是否为数字格式&#xff0c;返回布尔值 4…

Vue+Element导入导出Excel

一&#xff0c;安装 npm install -S file-saver xlsx npm install -D script-loader 二&#xff0c;导入Excel 1&#xff0c;Element 上传控件 <el-uploadaction"/":on-change"onChange":auto-upload"false":show-file-list"false&quo…

javafx 使用_使用JavaFX AnimationTimer

javafx 使用回想一下&#xff0c;给AnimationTimer起个名字可能不是一个好主意&#xff0c;因为它不仅可以用于动画&#xff0c;还可以用于测量fps速率&#xff0c;碰撞检测&#xff0c;模拟步骤&#xff0c;游戏主循环等。实际上&#xff0c;我大部分时间都在看AnimationTimer…

python 定时任务系统_Python定时任务,实现自动化的方法

python教程栏目介绍实现自动化的方法。1. 安装cron基本上所有的Linux发行版在默认情况下都预安装了cron工具。即使未预装cron&#xff0c;也很简单&#xff0c;执行几条简单的命令就可手动安装# 检查是否已经预装了cronservice cron status复制代码安装并启动服务安装&#xff…

sudo su 和 sudo -s区别

sudo su 和 sudo -s区别 sudo su 和 sudo -s都是切换到root用户&#xff0c;不同的是&#xff1a; sudo su 环境用的是目标用户(root)的环境 sudo -s 环境用的是当前用户本身的环境 posted on 2018-01-08 22:25 老于601 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnbl…

js UTF-8编码转为字符串

// UTF8编码转成汉字字符串 export function revertUTF8(szInput) {var x,wch,wch1,wch2,uch"",szRet"";for (x0; x<szInput.length; x) {if (szInput.charAt(x)"%") {wch parseInt(szInput.charAt(x) szInput.charAt(x),16);if (!wch) {bre…

.Net Core 简洁架构事件(这个不完整,待仔细补充)

.Net Core的架构 - 根据微软官方文档 微软给出了.Net Core的架构方法&#xff0c;无论是在web&#xff0c;azure&#xff0c;uwp等等 微软的github地址&#xff1a;https://github.com/dotnet-architecture/eShopOnWeb 转载于:https://www.cnblogs.com/bijinshan/p/8250512.htm…