尝试与数据库进行通信时,我对如何将值作为参数(例如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-06-09
- C#实现推送钉钉消息的方法示例 2023-01-11
- C#实现二叉排序树代码实例 2023-01-06
- c#常用表格控件dataGridView的分页显示 2023-07-05
- C#基于自定义事件EventArgs实现发布订阅模式 2023-06-05
- C# Volatile的具体使用 2023-05-06
- C#语言主要语言区域 2023-05-11
- C# Newtonsoft.Json 的使用说明 2023-03-29
- C#使用Twain协议实现扫描仪连续扫描功能 2023-05-12
- winform关闭窗体FormClosing事件用法介绍 2023-05-23