将存储过程写入C#中 有需要时则动态插入到数据库 免得麻烦

本文主要是介绍将存储过程写入C#中 有需要时则动态插入到数据库 免得麻烦,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随时记录自己遇到的问题.


有时程序在调用数据库的存储过程时,调用前需要检查存储过程是否存在, 存在就直接调用,不存在就创建存储过程,然后在调用
操作方法如下:




if exists( select 1 from sys.all_objects where [type]="p" and [name]="yourprocedurename")
begin
exec yourprocedurename 
end



在.net 中执行一段程序,检查数据库中有没有某一个存储过程,如果没有,就在数据中创建一个存储过程.操作代码如下:




        public static string UP_GetRecordByPage = @"
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N"[dbo].[UP_GetRecordByPage]") AND type in (N"P", N"PC"))
BEGIN
EXEC dbo.sp_executesql @statement = N"
CREATE PROCEDURE [dbo].[UP_GetRecordByPage]
@tblName      varchar(255),       -- 表名
@fldName      varchar(255),       -- 主键字段名
@PageSize     int = 10,           -- 页尺寸
@PageIndex    int = 1,            -- 页码
@IsReCount    bit = 0,            -- 返回记录总数, 非 0 值则返回
@OrderType    bit = 0,            -- 设置排序类型, 非 0 值则降序
@strWhere     varchar(1000) = """" -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL   varchar(6000)       -- 主语句
declare @strTmp   varchar(100)        -- 临时变量(查询条件过长时可能会出错,可修改100为1000)
declare @strOrder varchar(400)        -- 排序类型
declare @strSQL2   varchar(6000)       -- 主语句
if @OrderType != 0
begin
set @strTmp = ""<(select min""
set @strOrder = "" order by ["" + @fldName +""] desc""
end
else
begin
set @strTmp = "">(select max""
set @strOrder = "" order by ["" + @fldName +""] asc""
end
set @strSQL = ""select top "" + str(@PageSize) + "" * from [""
+ @tblName + ""] where ["" + @fldName + ""]"" + @strTmp + ""([""
+ @fldName + ""]) from (select top "" + str((@PageIndex-1)*@PageSize) + "" [""
+ @fldName + ""] from ["" + @tblName + ""]"" + @strOrder + "") as tblTmp)""
+ @strOrder
if @strWhere != """"
set @strSQL = ""select top "" + str(@PageSize) + "" * from [""
+ @tblName + ""] where ["" + @fldName + ""]"" + @strTmp + ""([""
+ @fldName + ""]) from (select top "" + str((@PageIndex-1)*@PageSize) + "" [""
+ @fldName + ""] from ["" + @tblName + ""] where "" + @strWhere + "" ""
+ @strOrder + "") as tblTmp) and "" + @strWhere + "" "" + @strOrder
if @PageIndex = 1
begin
set @strTmp =""""
if @strWhere != """"
set @strTmp = "" where "" + @strWhere
set @strSQL = ""select top "" + str(@PageSize) + "" * from [""
+ @tblName + ""]"" + @strTmp + "" "" + @strOrder
end
exec (@strSQL)
if @IsReCount != 0
begin
set @strSQL2 = ""select count(*) as Total from ["" + @tblName + ""]""+"" where "" + @strWhere
exec (@strSQL2)
end
" 
END
";







这篇关于将存储过程写入C#中 有需要时则动态插入到数据库 免得麻烦的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/953430

相关文章

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

C# Where 泛型约束的实现

《C#Where泛型约束的实现》本文主要介绍了C#Where泛型约束的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用的对象约束分类where T : structwhere T : classwhere T : ne

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel