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 ProjectName
FROM [xxx].[dbo].[xxx] trans
Where 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[];
Params[] = ProjectName;
Params[] = CultureName; DbHelper DBH = new DbHelper();
DataTable result = DBH.ExecuteDataTable("xxx", Params);
return result;
调用到这个函数后就得到了数据

我是用ajax调用api以json的形式返回的这个数据,用jquery处理的,还挺方便的
在C#中怎么处理还没怎么研究,但是应该不难,数据在Rows下面Results View里面

sqlserver 存储过程 C#调用 实现从数据库Get数据的更多相关文章
- mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
摘要: 下文讲述清空数据库中所有表信息的方法分享,如下所示: 实验环境:sql server 2008 实现思路: 1.禁用所有约束,外键 2.禁用所有触发器 3.删除表数据 4.开启触发器 5.开启 ...
- sqlserver存储过程中调用存储过程
declare @value1 varchar(100)declare @value2 int exec xx.dbo.xxxxx 'param1', 'param2', 'param3', @val ...
- 在SqlServer查询分析器里 访问远程数据库 进行数据查询更新等操作(openrowset)
启用Ad Hoc Distributed Queries: exec sp_configure 'show advanced options',1 reconfigure exec sp_config ...
- SQLSERVER 触发器 将一个服务器上的数据库中数据插入到另一个服务器上的数据库中怎么做
首先要执行 sp_addlinkedserver '服务器ip' 然后开始写语句 insert into ip.库名字.dbo.table select * from iserted
- [转]SQLSERVER存储过程调用不同数据库的数据_存储过程中通过链接服务器访问远程服务器
本文转自:http://blog.csdn.net/nnaabbcc/article/details/7967761 存储过程调用不同数据库的数据 在存储过程调用不同数据库的数据该如何做,比如在存储过 ...
- 创建并在项目中调用SQLSERVER存储过程的简单示例
使用SQLSERVER存储过程可以很大的提高程序运行速度,简化编程维护难度,现已得到广泛应用.创建存储过程 和数据表一样,在使用之前需要创建存储过程,它的简明语法是: 引用: Create PROC ...
- 存储过程系列之存储过程具体操作过程及sql数据库调用
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. 存 ...
- JDBC对MySQL数据库存储过程的调用
一.MySQL数据库存储过程: 1.什么是存储过程 存储过程(英文:Stored Procedure)是在大型数据库系统中,为了完成特定功能而编写的一组的SQL语句集.存储过程经编译存储在数据库中,用 ...
- sqlserver存储过程里传字段、传字符串,并返回DataTable、字符串,存储过程调用存储过程。
经常需要查一些信息, 想写视图来返回数据以提高效率,但是用试视图不能传参,只好想到改存储过程.记录一下语法,方便以后做项目时候想不起来了用. 1:传字段返回datatable 2: 传字段回一串字符 ...
随机推荐
- Python 开篇
一.Linux基础 - 计算机以及日后我们开发的程序防止的服务器的简单操作 二.Python开发 http://www.cnblogs.com/wupeiqi/articles/5433893.htm ...
- SChema 多个属性的设置学习
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http:/ ...
- Python测试进阶——(4)Python程序监控、存储、分析并可视化CPU和内存利用率
monitor190617.py 监控cpu和内存利用率信息,组织成json格式,并写入到 record.txt 文件中: import psutil import time import json ...
- JS 判断是否为安卓或IOS系统
其实很简单,代码如下<script type="text/javascript"> var device = navigator.userAgent; || devic ...
- EXTjs开发————优雅的用extjs写一个柱状图
简单的写法,extjs可以直接引用插件来写,这里将我发表在百度文库的文档简述下来,有兴趣也可以关注我的百度文库,ID:该用户已失踪. 主要部分的代码: $(document).ready(functi ...
- VTK基于MFC单文档的开发
目录 项目的搭建 相关头文件的引用 添加成员变量vtkRenderer, vtkMFCWindow CXxxView()中实例化变量vtkRenderer CXxxView::OnInitialUpd ...
- 《高性能MySQL》之EXPLAIN
使用explain关键字获取sql执行性能 语法如下: explain select * from table explain 中的列expain出来的信息有10列,分别是id,select_type ...
- 005.Delphi插件之QPlugins,IQNotify通知
演示的界面如下,拖动滚动条,百分比圆和进度条也是会跟着动的 主程序的代码如下 unit Frm_Main; interface uses Winapi.Windows, Winapi.Messages ...
- leetcode1302 Deepest Leaves Sum
""" Given a binary tree, return the sum of values of its deepest leaves. Example 1: I ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-cog
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...