C#SQL存储过程调用值

尝试与数据库进行通信时,我对如何将值作为参数(例如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存储过程调用值

基础教程推荐