C#与SQL Server存储过程之一(创建):使用C#创建SQL Server的存储过程http://www.diybl.com/

c#执行sqlserver带返回参数的存储过程 阅读详情

C#与SQL Server存储过程之一(创建):使用C#创建SQL Server的存储过程http://www.diybl.com/ 2008-4-22  网络 点击:  [ 评论 ]
-
-
文章搜索:     【点击打包该文章】 
【本站开通在线QQ讨论群】
 

通常,开发人员使用的是T-SQL来创建SQL Server的存储过程、函数和触发器。 而现在的SQL Server 2005已经完全支持.NET通用语言运行时(CLR)了。 这就意味着,你可以使用.NET的语言,如C#、VB.NET之类的来开发SQL Server的存储过程、函数和触发器。 SQL Server 和 CLR 的集成给我们带来了n多好处,如实时编译、类型安全、增强的安全性以及增强的编程模型等。 本文中,我将向大家演示如何使用C#创建SQL Server的存储过程。

背景

我们在使用SQL Server存储过程时,最常做的工作就是从数据库中读取或保存数据。 其常用应用如下:

◆执行一些简单的逻辑,没有任何返回值。 也没有输出参数。

◆执行一些逻辑,并通过一个或更多的输出参数返回结果。

◆执行一些逻辑,并返回从表中读取的一条或多条记录。

◆执行一些逻辑,并返回一行或多行记录。 这些记录不是从表中读取的,而是你自定义的一些数据行。

为了演示如何用C#开发出这几种应用的SQL Server存储过程,我将一个一个地举出示例。

启用CLR集成

在你开始用C#写存储过程之前,必须要启用你的SQL Server的CLR集成特性。 默认情况它是不启用的。 打开你的SQL Server Management Studio并执行如下脚本。

sp_configure ''clr enabled'', 1
GO
RECONFIGURE
GO

这里,我们执行了系统存储过程“sp_configure”,为其提供的两个参数分别为:“clr enabled”和“1”。如果要停用CLR集成的话也是执行这个存储过程,只不过第二个参数要变为“0”而已。另外,为了使新的设置产生效果,不要忘记调用“RECONFIGURE”。

SQL Server项目

现在打开Visual Studio,并从文件菜单中选择“新建项目”。 在“新建项目”对话框中选择“Visual C#”下的“Database”。 然后选择“SQL Server项目”模板。

 


起好项目名称后就单击“确定”按钮。

很快,你所创建的项目就要求你选择一个SQL Server数据库。

 


按照提示一步一步地做就好了,就算你选择了取消,也可以在“项目”–“属性”对话框中再一次选择数据库。 举个例子,假如你的电脑上有一个“北风贸易”数据库,那么就在“新建数据库引用”对话框中选中它,然后单击“确定”按钮。 之后,SQL Server项目在部署的时候就会将我们开发的存储过程写入这个数据库(继续往后看你就清楚是怎么回事了)。

接下来,右键单击你新建的这个项目,选择“添加”-“存储过程”。 然后将会出现如下图所示的对话框:

 


选择“存储过程”模板,并起一个合适的名字,然后单击“添加”按钮。

添加完后你就会发现,实际上这是创建了一个已经导入了需要用到的命名空间的类。

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

注意一下加粗显示的命名空间(译者注:后两个using)。 System.Data.SqlTypes命名空间包含了很多不同的类型,它们可以用来代替SQL Server的数据类型。 Microsoft.SqlServer.Server命名空间下的类负责SQL Server的CLR集成。

说明:本程序操作“北风贸易”数据库,“订货主档”表,表内含有的字段依次是:订单号码(int),送货城市(nvarchar(15)) …其他字段省略。

没有返回值的存储过程

在这一节中,我们将会看到如何写一个执行了一些逻辑,但是却没有任何返回值和输出参数的存储过程。 在这个例子里,我们将创建一个名为“ChangeCityName”的存储过程,它用来修改“订货主档”表中“送货城市”字段的值。 这个存储过程需要两个参数 –ID(需要更改“送货城市”的“订单号码”ID)和City(新的“送货城市”)。 “ChangeCityName”存储过程完成后的代码如下:(Procedure1)

    [Microsoft.SqlServer.Server.SqlProcedure]

    public static void ChangeCityName(SqlInt32 ID, SqlString City)

    {

        // 在此处放置代码

        SqlConnection con = new SqlConnection("context connection = true");

        con.Open();

        SqlCommand cmd = new SqlCommand();

        cmd.Connection = con;

        cmd.CommandText = "update 订货主档 set 送货城市=@City where 订单号码=@ID";

        SqlParameter p1 = new SqlParameter("@City", City);

        SqlParameter p2 = new SqlParameter("@ID", ID);  

        cmd.Parameters.Add(p1);

        cmd.Parameters.Add(p2);

        int row = cmd.ExecuteNonQuery();

        con.Close();

        SqlContext.Pipe.Send(row.ToString());

    }

};

仔细看一下这个ChangeCityName ()方法。 它是一个静态方法并且没有返回值(void)。 它需要两个名为ID和City的参数。 请注意这两个参数的数据类型是SqlInt32和SqlString。 SqlString可以用来代替SQL Server中的nvarchar数据类型。 这个方法用了一个[SqlProcedure]属性来修饰。 该属性用于标记ChangeCityName()方法是一个SQL Server存储过程。

在方法内我们创建了一个SqlConnection对象,并设置其连接字符串为“context connection = true”。 “上下文连接”可以让你使用当前登录到数据库的用户作为你的登录数据库的验证信息。 本例中,ChangeCityName()方法将会转换为存储过程,然后保存到“北风贸易”数据库里。 所以在这里的“上下文连接”指的就是“北风贸易”数据库。 这样你就不需要再写任何关于登录数据库的验证信息了。

接下来是打开数据库连接。 然后通过设置SqlCommand对象的Connection和CommandText属性,让其执行更新操作。 同时,我们还需要设置两个参数。 这样通过调用ExecuteNonQuery()方法就可以执行更新操作了。 再接下来就是关闭连接。

最后,将ExecuteNonQuery()方法的返回值发送到客户端。 当然你也可以不做这一步。 现在我们来了解一下SqlContext类的使用。 SqlContext类用于在服务端和客户端之间传递处理结果。 本例使用了Send()方法发送一个字符串返回给调用者。

返回从表中读取的一条或多条记录的存储过程

我们在使用存储过程时,经常会SELECT一条或多条记录。 你可以采用两种方法来创建这样的存储过程。

首先我们创建一个名为GetAllCustomers()的方法,代码如下:(Procedure2.1)

[Microsoft.SqlServer.Server.SqlProcedure]

    public static void GetAllInfo()

    { 

        SqlConnection con = new SqlConnection("context connection = true");

        SqlCommand cmd = new SqlCommand();

        cmd.Connection = con;

        cmd.CommandText = "Select * from 订货主档";

        con.Open();

        SqlDataReader reader = cmd.ExecuteReader();

        SqlContext.Pipe.Send(reader);

        reader.Close();

        con.Close();

}

这个GetAllInfo ()方法用了一个[SqlProcedure]属性来修饰。 在方法内创建一个SqlConnection和一个SqlCommand对象。 然后使用ExecuteReader()方法来执行SELECT语句。 接下来用Send()方法将取得的SqlDataReader数据发送到客户端。 最后就是关闭SqlDataReader和SqlConnection。 在这种方法中,是我们自己创建的SqlDataReader。

其实,我们也可以把这个任务交给SqlContext类去完成,代码如下:(Procedure2.2)

[Microsoft.SqlServer.Server.SqlProcedure]

    public static void GetAllInfoByID(SqlInt32 ID)

    {

        SqlConnection con = new SqlConnection("context connection=true");

        con.Open();

        SqlCommand cmd = new SqlCommand();

        cmd.Connection = con;

        cmd.CommandText = "select * from 订货主档 where 订单号码=@p1";

        SqlParameter p1 = new SqlParameter("@p1", ID);

        cmd.Parameters.Add(p1);

        SqlContext.Pipe.ExecuteAndSend(cmd);

        con.Close();

    }

GetAllInfoByID ()方法需要一个参数 –ID,它将从“订货主档”表中返回某行的记录。 这个方法内的代码,除了ExecuteAndSend()方法外,你应该都已经比较熟悉了。 ExecuteAndSend()方法接收一个SqlCommand对象作为参数,执行它就会返回数据集给客户端。

有输出参数的存储过程

我们在使用存储过程时,经常会通过输出参数返回一个经过计算的值。 所以,现在让我们来看一看如何创建具有一个或多个输出参数的存储过程。(Procedure3)

[Microsoft.SqlServer.Server.SqlProcedure]

    public static void GetCityName(SqlInt32 ID, out SqlString City)

    {

        SqlConnection con = new SqlConnection("context connection=true");

        con.Open();                                                

        SqlCommand cmd = new SqlCommand();

        cmd.Connection = con;

        cmd.CommandText = "Select  送货城市 from  订货主档 where  订单号码=@ID";

        SqlParameter id = new SqlParameter("@ID", ID);

        cmd.Parameters.Add(id);

        object obj = cmd.ExecuteScalar();

        con.Close();

        City = obj.ToString();

    }

这是一个名为GetCityName ()的方法,它需要两个参数。 第一个参数是ID,它是一个输入参数;第二个参数是City,它是一个输出参数(用关键字out来指明)。 这两个参数是SqlInt32和SqlString类型的。 GetCityName ()方法会接收一个ID参数,然后返回City(作为输出参数)。

该方法内的代码首先设置了SqlConnection和SqlCommand对象。 然后,使用ExecuteScalar()方法来执行SELECT语句。 ExecuteScalar()方法返回的值是一个object类型,它其实就是公司名称。 最后将输出参数City设置为这个值。

返回一行或多行自定义数据的存储过程

我们在使用存储过程时,更多的还是从某些表中读取数据。 但是,某些情况下我们需要的数据可能不在任何表里。 例如,你可能会基于某些计算来生成一个数据表格。 因为它的数据不是从表中获得的,所以上面的方法就不在适用了。 幸运的是,SQL Server的CLR集成特性给我们提供了一个解决这个问题的方法。 请看如下代码:(Procedure4.1)

[Microsoft.SqlServer.Server.SqlProcedure]

    public static void GetRow()

    {

        SqlMetaData[] metadata = new SqlMetaData[2];

        metadata[0] = new SqlMetaData("ID", SqlDbType.Int);

        metadata[1] = new SqlMetaData("City", SqlDbType.NVarChar, 15);

        SqlDataRecord record = new SqlDataRecord(metadata);

        record.SetInt32(0, 10248);

        record.SetString(1, "北京市");

        SqlContext.Pipe.Send(record);

}

GetRow()方法会返回一条记录并发送给客户端。 这个方法首先声明了一个SqlMetaData对象。 当你要用到自定义列的时候,就可以使用这个SqlMetaData类。 在我们的示例中,创建了两个类型为NVarChar,长度为15的列。然后创建了一个SqlDataRecord对象。 SqlDataRecord类可以用来表示一个自定义行。 它的构造函数需要一个SqlMetaData数组作为参数。 SqlDataRecord对象的SetString()方法用来设置列的值。 另外,还有许多不同的类似SetString()这样的方法,可以用来处理不同的数据类型。 最后,调用Send()方法将SqlDataRecord对象发送到客户端。

在上面的示例中,我们只返回了一行数据给调用者。 那么,如果要返回多行呢? 请看下面的代码:(Procedure4.2)

[Microsoft.SqlServer.Server.SqlProcedure]

    public static void GetMultipleRow()

    {

        SqlMetaData[] metadata = new SqlMetaData[2];

        metadata[0] = new SqlMetaData("ID", SqlDbType.Int);

        metadata[1] = new SqlMetaData("City", SqlDbType.NVarChar, 15);

        SqlDataRecord record = new SqlDataRecord(metadata);

        SqlContext.Pipe.SendResultsStart(record);

        record.SetInt32(0, 10249);

        record.SetString(1, "天津市");

        SqlContext.Pipe.SendResultsRow(record);

        record.SetInt32(0, 10250);

        record.SetString(1, "天津市");

        SqlContext.Pipe.SendResultsRow(record);

        SqlContext.Pipe.SendResultsEnd();

}

GetMultipleRow()方法将会返回多个SqlDataRecord对象到客户端。 接下来创建自定义列和设置列的值都和之前的例子一样。 但是,我们使用的是SendResutlsStart()方法来传输数据。 SendResultsRow()方法也是发送一个SqlDataRecord对象到客户端,但是我们可以多次调用它,从而做到发送多条记录。 最后,调用SendResultsEnd()方法用来标记已经完成数据传输操作。

我们已经开发完了存储过程。 现在就可以将这个项目编译为一个程序集(.DLL)。 但是我们的工作并没有到此结束。 我们还需要部署这个程序集和存储过程到SQL Server数据库。 有两种方法可以完成这个工作 – 手动和自动。 手动方法是使用T-SQL语句注册你的程序集,并将存储过程部署到SQL Server数据库中。 在本例中,我将使用自动的方法来部署存储过程到SQL Server数据库。

右键单击你的项目,然后在菜单中选择“部署”选项。

 


如此就会自动地完成注册程序集和部署存储过程的工作。 注意,只有在你创建项目时添加了数据库引用的时候,才会出现“部署”选项。 如果因为某些原因你没能添加数据库引用,那么你可以通过项目属性对话框来设置它。

 


如果你在SQL Server Management Studio查看Northwind数据库的话,那么就应该可以看到和下图相似的结果。

 


注意,在存储过程节点下出现了我们创建的所有方法(有“锁”图标的),并且在程序集节点下出现了我们的程序集。

就是这些东西,很简单吧。 现在你就可以在你的程序中调用这些存储过程了。你也可以在SQL Server Management Studio中来测试它们。

作者简介:Bipin Joshi是DotNetBips.com的管理员。他是http://www.binaryintellect.com/的发起人,这个公司提供.NET framwork的培训和咨询服务。他在印度孟买为开发者提供培训。他也是微软的MVP(ASP.Net)和ASPInsiders的会员

文章出处:http://www.diybl.com/course/4_webprogram/asp.net/asp_netshl/2008422/111114.html

c# 调用 sqlserver 存储过程(非常完美流程简单)                                                     相信我很简单,按照步骤执行下去,你将收获很多。 准备条件1: 在sqlserver数据库中执行创建表:: USE [NavyMasterDataBase] GO /****** Object: Table [dbo].[navy_table] Script Date: ... 阅读详情

相关推荐

C# winform调用SQL存储过程-菜鸟入门 详细注释

内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 适合人群:具备一定编程基础的研发人员 能学到什么:1、Sql数据库连接。2、通过sql对象访问数据库和接收数据库的返回值 阅读建议:此资源以开发简化版C# WinFrom的小实例,仅实现了单个功能,所以在学习的过程要结合这些内容一起来实践,并调试对应的代码。

[翻译]使用C#创建SQL Server的存储过程(Visual Studio 2005 + SQL Server 2005)

原文地址:http://www.dotnetbips.com/articles/70eff218-3da0-4f6f-8f8d-eeea65193f2c.aspx[原文源码下载][翻译]使用C#创建SQL Server的存储过程(Visual Studio 2005 + SQL Server 2005)原文发布日期:2007.06.17作者:Bipin Joshi翻译:webabcd介绍通

webabcd的专栏 573

告别单一查询!MultiQueryRetriever在LangChain中的高级用法解析

本文深入解析了LangChain中的MultiQueryRetriever高级用法,该工具通过大语言模型自动生成多样化查询,显著提升文档检索的召回率和准确性。文章详细介绍了其核心机制、高级配置调优策略以及在多语言和专业领域中的实际应用,为开发者提供了优化知识库问答系统的实用方案。

weixin_28730927的博客 271

Visual Studio 连接 MySQL 数据库 实现数据库的读写(C++)

Visual Studio 连接 MySQL 数据库 实现数据库的读写(C++)

weixin_72479477的博客 2341

分布式光纤传感(DFOS)DTS/DAS/DSS 三合一:10公里管线监测实战与数据解读

本文详细介绍了分布式光纤传感(DFOS)技术在10公里管线监测中的实战应用,通过DTS(温度)、DAS(振动)、DSS(应变)三合一系统,实现对管线健康状态的立体感知。文章涵盖工程部署、数据采集、多物理量数据融合及噪声抑制等关键技术,展示了如何通过一根光纤完成复杂监测任务,显著提升管线安全性和维护效率。

weixin_29168153的博客 315

【国民技术N32项目移植】基于 Windows 的 ARM GCC 开发环境

【国民技术N32项目移植】基于 Windows 的 ARM GCC 开发环境

weixin_42150032的博客 1361

c#+sqlServer存储过程详解

1.--SqlServer创建存储过程 create proc [dbo].[P_insert_gads] --定义参数@type int, @uid int, @uname nvarchar(50), @address nvarchar(50), @remark ntext, @pass nvarchar(50), @uphone nvarchar(12), --定义输出参数@result...

樱花园丁 1389

Scipy优化踩坑实录:trust-constr和SLSQP约束定义到底差在哪?

本文深入解析了Scipy优化模块中trust-constr和SLSQP两种方法在约束定义上的差异。通过对比面向对象的trust-constr和字典式定义的SLSQP,揭示了它们各自的优势与适用场景,帮助开发者在有约束优化问题中选择合适的算法,提升计算效率与准确性。

weixin_42573113的博客 271

C#操作SqlServer数据库存储过程

【代码】C#操作SqlServer数据库存储过程。

qq_3517289697的博客 1320

车规SoC深度对比:高通8397 vs 比亚迪D9000 vs 联发科CT-X1/MT8676/MT2715

芯片优势弱势最适合场景高通 8397低功耗、低延迟AI和音频处理单屏算力略低HUD + 音响座舱 + 低延迟交互D9000多屏渲染、Wi-Fi7高速通信AI算力中等高端多屏座舱 + 流媒体娱乐CT-X1极高AI算力、多模态渲染功耗较高高端沉浸式智能座舱 + 多摄像头感知MT8676算力均衡、座舱应用全面GPU稍弱全栈智能座舱、音视频多任务MT2715成本低、入门座舱可用算力低,低端显示入门智能座舱、基础信息娱乐。

weixin_43199439的博客 1769

各大厂薪资对比爬虫:Python采集OfferShow爆料数据

print(f"⚠️ API返回错误码: {data.get('code')}, msg: {data.get('msg')}")ax.set_title('各大厂薪资对比 (基于OfferShow爆料数据)', fontsize=16, fontweight='bold')stats.columns = ['人数', '平均年薪', '年薪中位数', '年薪标准差', '平均月薪', '平均月数']print(analyzer.get_position_stats('字节跳动').head(10))

2201_76125261的博客 603

五、C#与数据库交互(数据存储过程与触发器)

在C#中与数据库交互时,除了基本的查询和更新操作,还经常需要使用存储过程和触发器。下面我将简要介绍如何在C#中使用存储过程和触发器。

ww1457950571的博客 1093

物联网通信中NB-IoT、Cat.1、LTE-M该如何选择?

首先我们要确定我们产品的关键需求,例如:我们的设备是否对数据传输速率有较高的要求,有较高要求我们就需要选择较高传输速率的Cat.1来开发我们的产品。同时关于产品性能方面,我们对功耗、延迟、可靠性也会有所要求,例如我们的产品为移动端产品,不方便布线以及安装电源,那我们就会采用电池供电的方式,所以在选择时可以优先考虑低功耗产品,最终结合其他需求选择出合适的协议。首先,我们需求的产品是不同的,我们需要根据产品需求或项目需求来进行选择,NB-IoT、Cat.1、Cat.M都有属于自己的优势。

a1809032425的博客 1216

Visual Studio 连接sql数据库 将结果存储到文件

初次使用visual studio 2013很舒心,下面先讲存入到文件中的方法: 一:存入文件 string result1 = @"D:\result1.txt";//结果保存到D:\result1.txt FileStream fs = new FileStream(result1, FileMode.Append);//检测文件 StreamWriter wr = null; wr ...

LieYingZhiYan的专栏 3098

普通用户也能免费使用 SAP Joule!

点击 SAP Joule 给出的按钮之后,SAP Business Application Studio 左侧显示的界面,就从 SAP Joule 替换成了 SAP Fiori tools 的 Project Accelerator 工具。接下来就是在后者中标准的操作流程了。笔者之前的文章,有朋友提问,既然 ChatGPT,DeepSeek,Grok 这些主流 AI 工具,回答 SAP 相关问题时都经常翻车,那 SAP 自家的 Joule 表现又如何呢?还有朋友评论:如何才能使用 SAP Joule?

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1018

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NET.MVC:利用NPOI大数据的导入方式

文献种类:专题技术文献; 开发工具与关键技术: Vs2015 C# 作者:Eric;年级:1901 ;撰写时间: 2020 年 9 月 23 日 文献编号: 归档时间: 年 月 日 说明:关于在MVC中用NPOI导入数据之前也有写过一篇,但那种方 式只适合数据比较小的情况,当导入数据大于1000条的时候,那 么那中方式的导入速度是很慢的,甚至会报错。而接下来这种原 理是利用SQL中的导入,所以就算你导入数据很庞大,甚至超过 一万条到时候,也不用担心导入速度 ‘正文: 导入思路: 1、获取读取的文件 2、把文

weixin_47316183的博客 640

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

SQL语句创建数据库:全面指南

本文详细介绍了SQL语句创建数据库的各个方面,包括基础语法、数据库对象的创建、完整性约束、触发器以及数据库的备份与恢复等内容。深入理解这些概念和操作,有助于构建和维护高效、可靠的数据库系统。

maohedashu的博客 1135

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SQL创建存储过程

创建SQL存储过程需要使用到的语法 - 创建存储过程 CREATE 存储过程的名称(参数) BEGIN ...需要执行的SQL语句 END - 调用 CALL 存储过程的名称(参数) 个人看法,这就是一个函数... 无参数 CREATE PROCEDURE p_student_select() BEGIN SELECT * FROM student; END CALL p_student_select() 带参 # out其实就是cpp里的引用变量,in就是值传递 CREATE PROCEDUR

ht_vIC的博客 2万+

使用SQL语句创建存储过程

本篇文章是记录学校学习SQL server中的存储结构知识,用于复习资料.

@初阶牛的博客 1万+

c# 调用SqlServer存储过程(初级入门)

1、sqlserver新建存储过程 USE [test] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE proc [dbo].[add_my_user] @UserID nvarchar(50), @Name nvarchar(50), @Sex nvarchar(50), @Address nvarchar(50), @Email varchar(50), @Password varchar(50), @Department int

48303354的博客 1173

SqlServer 存储过程使用整理

exec sp_defaultdb ‘旧库名’, ‘新库名’;更改登录名的默认数据库。exec sp_renamedb ‘旧库名’, ‘新库名’;exec sp_rename ‘旧名’, ‘新名’;修改表、索引、列的名称。exec sp_helptext ‘存储过程’;exec sp_helpConstraint 表名;查询当前数据库的所有表。exec sp_help 表名;参数可以写小括号中,如果没有参数,小括号可以省略不写;默认不写是输入变量;

天马3798 5449

C#中SqlHelper工具类的实现

/存储过程 or Sql语句。/// 第一行第一列。

一支黑色の铅笔博客 758

c# 公共类SqlHelper

ADO.NET操作数据库公共方法 一示例 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; using System.Configuration; namespace Com...

预立数据科技 2020

C#执行SQL Server的储存过程命令

一、执行常规SQL语句 SqlConnection conn = new SqlConnection("连接字符串"); conn.Open(); //建立连接,并执行sql语句命令 SqlCommand cmd = new SqlCommand(SQLString, conn); // 执行SQL语句,返回影响的记录数 res = cmd.ExecuteNonQuery(); 二、执行储存过程 想执行储存过程命令,需要设置SqlCommand的CommandType类型,CommandType类

美奇软件开发工作室 3664

C# SqlHelper 详解(自己总结)

序言 数据库是我们常用的存储数据的容器,网上有很多关于SqlHelper 类库,里面有的写的很复杂很详细(有点冗余),有很多方法基本上用不到,所以自己根据很多的项目实践总结了一套适合自己的SqlHelper 类 包括 数据库的增、删、改、查、存储过程、事务等,以便后续使用,希望能给诸君有些帮助,如有错误麻烦请指出并纠正。 数据库的创建 创建一个银行信息数据 use master --- 判断 系统是否有数据库 if exists(select * from sys.databases where

qq_39138424的博客 3065

SqlHelper基于存储过程

using System; using System.Data; using System.Data.SqlClient; using System.Collections; using System.Windows.Forms; namespace SqlHelp { /// <summary> /// OpraCotroller 的摘要说明。 /// </summar...

MaFeng 613
上一篇: .NET中转发与跳转区别
下一篇: ASP.NET中Cookie之Cookie基础知识
tflb521
博客等级 码龄23年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值