DapperSQL Server - 从包含 Insert 和 Select 语句的存储过程获取输出

sqlserver

1个回答

写回答

Yaoyao1017

2025-09-08 09:50

+ 关注

AI
AI

使用Dapper和SQL Server进行数据库操作是一种高效且简洁的方法。本文将介绍如何通过一个包含Insert和Select语句的存储过程来获取输出,并提供相应的案例代码。

背景介绍

在许多应用程序中,我们经常需要将数据插入数据库,并且在插入成功后获取生成的主键值或其他输出。通过使用存储过程,我们可以将这些操作封装在一个单独的过程中,从而提高代码的可维护性和重用性。

使用Dapper执行存储过程

Dapper是一个轻量级的ORM(对象关系映射)工具,它提供了简洁的API来执行SQL查询和操作数据库。下面是一个使用Dapper执行包含Insert和Select语句的存储过程的示例代码:

csharp

public class Person

{

public int Id { get; set; }

public string Name { get; set; }

public int Age { get; set; }

}

public int InsertPerson(string name, int age)

{

using (var connection = new SqlConnection(connectionString))

{

var parameters = new DynamicParameters();

parameters.Add("@Name", name);

parameters.Add("@Age", age);

parameters.Add("@Id", dbType: DbType.Int32, direction: ParameterDirection.Output);

connection.Execute("InsertPerson", parameters, commandType: CommandType.StoredProcedure);

int id = parameters.Get<int>("@Id");

return id;

}

}

public Person GetPerson(int id)

{

using (var connection = new SqlConnection(connectionString))

{

return connection.QueryFirstOrDefault<Person>("GetPerson", new { Id = id },

commandType: CommandType.StoredProcedure);

}

}

在上面的代码中,我们首先定义了一个Person类来表示数据库中的人员信息。然后,我们使用InsertPerson方法将一个人员的信息插入数据库,并获取生成的主键值。最后,我们使用GetPerson方法根据主键值从数据库中获取相应的人员信息。

案例演示

假设我们有一个名为Person的表,包含IdNameAge三个列。我们可以通过以下方式创建一个包含Insert和Select语句的存储过程来完成相应的操作:

sql

CREATE PROCEDURE InsertPerson

@Name NVARCHAR(50),

@Age INT,

@Id INT OUTPUT

AS

BEGIN

INSERT INTO Person (Name, Age) VALUES (@Name, @Age)

SET @Id = SCOPE_IDENTITY()

END

CREATE PROCEDURE GetPerson

@Id INT

AS

BEGIN

SELECT * FROM Person WHERE Id = @Id

END

在上述存储过程中,InsertPerson过程将根据提供的姓名和年龄插入一条记录,并将生成的主键值存储在@Id输出参数中。GetPerson过程根据提供的主键值查询相应的人员信息。

接下来,我们可以使用上面提供的代码来执行这些存储过程。下面是一个简单的示例:

csharp

string name = "John";

int age = 30;

int id = InsertPerson(name, age);

Console.WriteLine("Inserted person with id: " + id);

Person person = GetPerson(id);

Console.WriteLine("Retrieved person detAIls: ");

Console.WriteLine("Id: " + person.Id);

Console.WriteLine("Name: " + person.Name);

Console.WriteLine("Age: " + person.Age);

在上面的示例中,我们首先调用InsertPerson方法将一个名为"John",年龄为30的人员信息插入数据库,并获取生成的主键值。然后,我们调用GetPerson方法根据主键值获取相应的人员信息,并将结果打印到控制台。

通过使用Dapper和SQL Server的存储过程,我们可以方便地执行包含Insert和Select语句的操作,并获取相应的输出。Dapper提供了简洁的API来执行存储过程,并通过使用输出参数来获取生成的主键值或其他输出。这种方法不仅可以提高代码的可维护性和重用性,还可以提高数据库操作的性能和安全性。

希望本文对你理解如何使用Dapper和SQL Server执行存储过程并获取输出有所帮助。如果你有任何问题或疑问,请随时在下方留言。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号