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
sqlserver 存储过程 C#调用 实现从数据库Get数据相关推荐
- Python调用阿里云数据库监控数据
概述 基于Python 3.6.0 实现 抓取公司云数据库监控数据 存入本地数据库 centos定时任务 每分钟执行一次 引入SDK # 安装Python SDK 包 pip install aliy ...
- python获取数据库的存储过程_python远程调用sqlserver存储过程记录
开发中需要python远程调用sqlserver存储过程.搜索了网上有两种方式,pymssql和pyodbc.开始采用第一种方式开发,不过无法拿到存储过程中的返回数据,后采用pyodbc开发,当然存储 ...
- SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)...
存储过程有三种返回: 1. 用return返回数字型数据 2. 用返回参数返回结果,可以返回各种数据类型(通过游标来循环查询结果每一行) 3. 直接在存储过程中用select返回结果集,可 ...
- PHP写sqlserver事务,php调用sqlserver存储过程使用事务处理
第一次编写 sqlserver存储过程并在php里调用,把脑瓜都整大了,奋战了一天多最后还是搞定了. 实现功能:在 sqlserver里面实现事务处理,保证数据库操作安全: 接收sqlserver存储 ...
- 存储过程调用不同数据库的数据
存储过程调用不同数据库的数据 在存储过程调用不同数据库的数据该如何做,比如在存储过程名为AAA的存储过程里面调用数据库为hudu1,hudu2,hudu3里面的数据来统计? 在同一台数据库服务器上: ...
- java调用存储过程sqlserver_Java调用SqlServer存储过程怎么实现 | 学步园
在使用Java开发时,经常会遇到调用SqlServer存储过程的问题.下面学步园小编来讲解下Java调用SqlServer存储过程怎么实现? Java调用SqlServer存储过程怎么实现 1.数据库 ...
- JDBC对MySQL数据库存储过程的调用
一.MySQL数据库存储过程: 1.什么是存储过程 存储过程(英文:Stored Procedure)是在大型数据库系统中,为了完毕特定功能而编写的一组的SQL语句集.存储过程经编译存储在数据库中.用 ...
- 存储过程系列之存储过程具体操作过程及sql数据库调用
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. 存 ...
- mysql数据库存储过程及调用方法
mysql数据库存储过程及调用方法 mysql5.0以后就支持存储过程了,目前mysql的6.0Alpha版也已经推出.6.0不仅支持大型数据库如oracle等的绝大部分功 能,如存储过程.视图.触发 ...
最新文章
- git config --global写到哪里?
- 5-1rquests模拟登陆知乎之httpcode
- 去中心化钱包CoinU下载教程(如何下载C)
- 如何通过shell脚本操作MongoDB
- Apache优化——日志管理
- mysql二阶段提交有什么问题_MySQL的事务两阶段提交的技术有什么意义?
- 信息学奥赛一本通 1017:浮点型数据类型存储空间大小 | OpenJudge NOI 1.2 02
- sqlmap源码阅读_setPreprocessFunctions和_setPostprocessFunctions
- python读取视频占用内存太大_Python 读取大文件内存占用检测示例
- 初级web前端必会知识点:HTML部分,看看你都会吗?
- 新版office365介绍
- 戏说前端 JavaScript 之『防抖节流』基础知识
- 博弈-Green Hackenbush(无向图删边)
- 架构师都应该知道的康威定律
- java实战——照片编辑器
- android 画扇形进度条,css绘制扇形进度条
- dbus-1 not met问题
- Ajax和Json使用入门
- js中text方法是啥意识_JS中Text节点总结
- 一级计算机无法正常评分,计算机一级评分标准
热门文章
- 噪音声压和声功率的区别_南昌汽车隔音,深入了解汽车噪音的来源、危害以及解决方案...
- 框架下载_25. Scrapy 框架-下载中间件Middleware
- globalmapper如何选取图像上的点_OpenCV 进阶应用,用编程手段搞定图像处理
- win7计算机个性化设置,笔记本电脑windows7系统如何用好电脑个性化设置
- oracle dbwr trace文件,ORA-01157: cannot identify/lock data file 19 - see DBWR trace file问题处理...
- python getopt.getopt_python 参数格式化getopt
- java springmvc权限校验_详解Spring MVC使用Filter实现登录及权限验证判断
- chrome 占用大量内存直到网页崩溃_Chrome吃内存太夸张!几招解决Chrome占内存硬伤...
- 网管型工业交换机如何提高网路流量过滤?
- 选购光纤交换机时需要注意光模块的哪些配置?