尝试与数据库进行通信时,我对如何将值作为参数(例如itemID)传递并获取具有此ID的记录感到困惑.这是我的存储过程:ALTER PROCEDURE [dbo].[sp_lightItem](@itemID INT)ASBEGINSELECT [itemID],[itemName],[itemL...
尝试与数据库进行通信时,我对如何将值作为参数(例如itemID)传递并获取具有此ID的记录感到困惑.
这是我的存储过程:
ALTER PROCEDURE [dbo].[sp_lightItem]
(
@itemID INT
)
AS
BEGIN
SELECT [itemID],
[itemName],
[itemLocation],
[itemChBy]
FROM [dbo].[Item]
WHERE itemSystemType='E' and itemID=@itemID ORDER BY itemID DESC;
END
到目前为止这是我的c#代码..
public string LoadItemNew(int ItemID)
{
var acf = new AcFunctions();
var newstorevalue = SqlHelper.ExecuteDataset(acf.AcConn(), "sp_lightItem", ItemID);
}
正如您在存储过程中看到的,我想要的是获取这4个元素:
[itemID],[itemName],[itemLocation],[itemChBy]
不幸的是我不知道如何让他们回来/如何在c#函数中调用它们.
欢迎任何帮助.
解决方法:
您可以尝试使用此方法,我将使用数据传输对象来保存从数据库中检索的数据,并使用Execute DataReader进行读取.
首先,您需要创建一个DTO类,我将其称为LightItemDTO
public class LightItemDTO
{
public int Id { get; set; }
public string Name { get; set; }
public string Location { get; set; }
public string ChangedBy { get; set; }
}
注意:如何知道属性的类型,可以参考以下链接:SQL Server Data Type Mappings
现在,我将使用ADO.NET执行存储过程以从数据库中获取数据
public IEnumerable<LightItemDTO> GetLightItem(string itemText, string sqlConnectionString)
{
var results = new List<LightItemDTO>();
using (var con = new SqlConnection(sqlConnectionString))
{
using (var cmd = new SqlCommand("sp_lightItem", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ItemID", SqlDbType.VarChar).Value = itemText;
con.Open();
using (var reader = cmd.ExecuteReader())
{
results.Add(new LightItemDTO
{
Id = Convert.ToInt32(reader["itemID"]),
Name = reader["itemName"].ToString(),
Location = reader["itemLocation"].ToString(),
ChangedBy = reader["itemChBy"].ToString()
});
}
}
}
return results;
}
使用DataReader是高性能的最佳实践.
ADO.NET是实现此任务的手动方式,您可以使用一些ORM框架来做到更容易,例如:Entity Framework,Dapper.NET …
本文标题为:C#SQL存储过程调用值
- c# 委托的本质是什么 2023-03-09
- C# 如何获取当前进程或线程的ID 2023-05-31
- 利用C#开发浏览器扩展的全过程记录 2023-04-22
- C#实现PDF页面合并的示例代码 2023-06-05
- 从x64 C#应用程序调用x86 PowerShell脚本 2023-09-19
- C#实现异步的常用方式总结 2023-07-19
- C# 图片格式转换的实例代码 2023-03-09
- C# / VB.NET 在PPT中创建、编辑PPT SmartArt图形的方法详解 2023-03-14
- 利用C#编写Linux守护进程实例代码 2022-12-06
- C# 泛型字典 Dictionary的使用详解 2023-06-09