将存储过程写入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

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

C#如何去掉文件夹或文件名非法字符

《C#如何去掉文件夹或文件名非法字符》:本文主要介绍C#如何去掉文件夹或文件名非法字符的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#去掉文件夹或文件名非法字符net类库提供了非法字符的数组这里还有个小窍门总结C#去掉文件夹或文件名非法字符实现有输入字

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

Spring Boot 整合 Apache Flink 的详细过程

《SpringBoot整合ApacheFlink的详细过程》ApacheFlink是一个高性能的分布式流处理框架,而SpringBoot提供了快速构建企业级应用的能力,下面给大家介绍Spri... 目录Spring Boot 整合 Apache Flink 教程一、背景与目标二、环境准备三、创建项目 & 添