SQL Server存储过程在C#中调用的简单实现方法

下面我将详细讲解SQL Server存储过程在C#中调用的简单实现方法。

简介

存储过程是在SQL Server中执行SQL语句的一种重要方式,它可以提高数据库的性能,减少重复的代码量,还可以提高数据库的安全性。通过C#语言来调用SQL Server存储过程,可以更加方便地完成数据库操作。

第一步:创建SQL Server存储过程

创建SQL Server存储过程需要使用SQL Server Management Studio,下面是一个简单的示例:

CREATE PROCEDURE [dbo].[GetProductList]
AS
BEGIN
    SELECT ProductName, ProductDescription, ProductPrice 
    FROM ProductTable
END

上面的存储过程名为GetProductList,它查询一个名为ProductTable的表,并返回其中的三个字段:ProductName、ProductDescription、ProductPrice。

第二步:在C#中调用SQL Server存储过程

调用SQL Server存储过程需要使用System.Data.SqlClient命名空间的相关类,具体步骤如下:

1. 在C#中创建SqlConnection连接对象

string connectionString = "Data Source=(local);Initial Catalog=ProductDB;Integrated Security=True";
SqlConnection connection = new SqlConnection(connectionString);

上面的代码创建了一个名为connection的SqlConnection对象,连接字符串为“Data Source=(local);Initial Catalog=ProductDB;Integrated Security=True”,其中“Data Source”表示数据库所在的服务器位置,“Initial Catalog”表示要连接的数据库名称,而“Integrated Security=True”则表示使用Windows身份验证模式连接数据库。

2. 创建SqlCommand对象并执行存储过程

string procedureName = "GetProductList";
SqlCommand command = new SqlCommand(procedureName, connection);
command.CommandType = CommandType.StoredProcedure;

connection.Open();
SqlDataReader reader = command.ExecuteReader();

while (reader.Read())
{
    Console.WriteLine(reader["ProductName"]);
    Console.WriteLine(reader["ProductDescription"]);
    Console.WriteLine(reader["ProductPrice"]);
}

reader.Close();
connection.Close();

上面的代码创建了一个名为command的SqlCommand对象,指定它要执行的存储过程名为“GetProductList”,并将CommandType属性设置为CommandType.StoredProcedure。

然后,通过connection.Open()方法打开Sql连接,并执行一个名为ExecuteReader的方法,返回一个名为reader的SqlDataReader对象,通过while语句读取查询结果,并输出结果。

最后,需要调用reader.Close()方法和connection.Close()方法关闭SqlDataReader和SqlConnection。

示例1:查询用户信息

现在,我们将使用上述方法来查询一个名为UserInfo的表,并返回其中的三个字段:UserID、UserName、UserAge。完整代码如下:

CREATE PROCEDURE [dbo].[GetUserInfo]
AS
BEGIN
    SELECT UserID, UserName, UserAge 
    FROM UserInfo
END
string connectionString = "Data Source=(local);Initial Catalog=UserDB;Integrated Security=True";
SqlConnection connection = new SqlConnection(connectionString);

string procedureName = "GetUserInfo";
SqlCommand command = new SqlCommand(procedureName, connection);
command.CommandType = CommandType.StoredProcedure;

connection.Open();
SqlDataReader reader = command.ExecuteReader();

while (reader.Read())
{
    Console.WriteLine(reader["UserID"]);
    Console.WriteLine(reader["UserName"]);
    Console.WriteLine(reader["UserAge"]);
}

reader.Close();
connection.Close();

示例2:插入一条用户信息

现在,我们将使用上述方法来向一个名为UserInfo的表中插入一条数据。完整代码如下:

CREATE PROCEDURE [dbo].[InsertUserInfo]
    @UserID INT,
    @UserName NVARCHAR(50),
    @UserAge INT
AS
BEGIN
    INSERT INTO UserInfo(UserID, UserName, UserAge)
    VALUES (@UserID, @UserName, @UserAge)
END
string connectionString = "Data Source=(local);Initial Catalog=UserDB;Integrated Security=True";
SqlConnection connection = new SqlConnection(connectionString);

string procedureName = "InsertUserInfo";
SqlCommand command = new SqlCommand(procedureName, connection);
command.CommandType = CommandType.StoredProcedure;

command.Parameters.AddWithValue("@UserID", 1);
command.Parameters.AddWithValue("@UserName", "张三");
command.Parameters.AddWithValue("@UserAge", 20);

connection.Open();
command.ExecuteNonQuery();
connection.Close();

上面的代码首先创建了一个名为InsertUserInfo的存储过程,在该过程中使用了三个参数:@UserID、@UserName和@UserAge,然后将这些参数添加到一个SqlCommand对象的Parameters集合中。

接着,通过command.ExecuteNonQuery()方法执行存储过程中的INSERT语句,并插入一条数据。

最后,需要调用connection.Close()方法关闭连接。

总结

通过本教程,你已经学会了在C#中调用SQL Server存储过程的简单实现方法。如果你还没有掌握这一技能,我建议你多做一些练习,在实践中逐渐熟练掌握。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL Server存储过程在C#中调用的简单实现方法 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#索引器简单实例代码

    接下来我将为你详细讲解“C#索引器简单实例代码”的完整攻略。 1. 什么是C#索引器 C#索引器(indexer)是一种特殊的属性,允许类或结构中的对象通过类似于数组的方式进行索引和访问。可以理解为是类内部的一种自定义“数组”。声明一个索引器需要使用 this 关键字,接着在中括号内指定索引参数的数据类型。例如: public class MyClass {…

    C# 2023年6月3日
    00
  • C#探秘系列(一)——ToDictionary,ToLookup

    C#探秘系列(一)——ToDictionary,ToLookup 概述 ToDictionary和ToLookup都是基于IEnumerable的扩展方法,可以将IEnumerable转换为Dictionary和ILookup。两个方法所能承载的数据结构不同,具体使用也有细微差别,下面我们来逐一讲解。 ToDictionary 描述 ToDictionary…

    C# 2023年5月15日
    00
  • C#图片截取压缩(百分比压缩/大小压缩)实现代码

    下面我将为您详细讲解“C#图片截取压缩(百分比压缩/大小压缩)实现代码”的完整攻略。 一、实现思路 图片截取和压缩功能可以通过C#中内置的System.Drawing命名空间的方法来实现。具体实现流程如下: 读取原始图片文件,创建一个Image对象; 将Image对象转换为Bitmap对象; 调用Bitmap对象的Crop方法对图片进行截取,得到截取后的Bi…

    C# 2023年6月7日
    00
  • C#如何在窗体程序中操作数据库数据

    你好,操作数据库是窗体程序的一个关键功能之一,C#通过ADO.NET技术来实现数据库连接,并且提供了丰富的工具和类实现数据的访问、读写和更新等操作。下面是C#在窗体程序中操作数据库数据的完整攻略。 步骤一:创建数据库连接 连接数据库是操作数据库的第一步,C#通过SqlConnection类来创建数据库连接,构造方法的参数是连接字符串,其中包含数据库的地址、用…

    C# 2023年5月15日
    00
  • c#读取xml文件到datagridview实例

    接下来我将为您详细讲解“C#读取XML文件到DataGridView实例”的完整攻略。 1. 读取XML文件 在C#中,读取XML文件可以使用XmlDocument类或XDocument类。这里以XmlDocument类为例。 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("data.xml…

    C# 2023年6月1日
    00
  • 深入c# Func委托的详解

    深入c# Func委托的详解 什么是Func委托 Func委托是一个通用泛型委托,可以接受1至16个输入参数,并返回一个返回值。因为Func是一个泛型委托,所以可以用来创建适合各种输入和返回类型的委托。 Func是一个系统内建的委托类型,在System命名空间中定义,其语法如下: public delegate TResult Func<in T, o…

    C# 2023年6月1日
    00
  • AspNetCoreRateLimit应用于MVC项目求助

    AspNetCoreRateLimit应用于MVC项目求助 前言 之前发过一篇文章: .NET Core WebApi接口ip限流实践 – 妙妙屋(zy) – 博客园 (cnblogs.com) 然后应用在前后端分离项目这个组件是非常好用的。但应用于不分离的项目,比如我的个人博客就有点麻烦。 就是我的需求是评论接口限流,然后触发限流后要回到文章页面告诉用户你…

    C# 2023年5月8日
    00
  • ASP.NET Core基础之中间件

    ASP.NET Core基础之中间件 在ASP.NET Core中,中间件是处理HTTP请求和响应的组件。中间件可以执行各种任务,例如路由请求、验证身份、记录请求、压缩响应等。本攻略将介绍ASP.NET Core中间件的基础知识,包括如何创建和使用中间件,并提供两个示例说明。 创建中间件 在ASP.NET Core中,可以通过实现IMiddleware接口或…

    C# 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部