如何在 C# 中访问 sqldatareader 的特定列

本文关键字:sqldatareader 访问 | 更新日期: 2023-09-27 18:33:02

我正在编写一个将调用存储过程的方法。此存储过程将返回包含属性的数据集。我需要更改一个特定属性的值。我的代码是这样的。

try
        {               
            cmdPendingStatus.CommandType = CommandType.StoredProcedure;
            SqlDataReader pendingStatusList;
            List<string> lstPendingRequestId = new List<string>();
            try
            {
                conn.Open();
                pendingStatusList = cmdPendingStatus.ExecuteReader();
                if (pendingStatusList.HasRows)
                {
                    while (pendingStatusList.Read())
                    {
                        lstPendingRequestId.Add(pendingStatusList.GetString(0));
                    }
                }
            }

如何在 C# 中访问 sqldatareader 的特定列

cmdPendingStatus.CommandType=CommandType.StoredProcedure;
SqlDataReader pendingStatusList;
List<string> lstPendingRequestId = new List<string>();
try
{
  conn.Open();
  pendingStatusList = cmdPendingStatus.ExecuteReader();
  if (pendingStatusList.HasRows)
  {
    while (pendingStatusList.Read())
    {
      if(condition here)
      {
        lstPendingRequestId.add("NEW VALUE")
      }
      else
      {
        lstPendingRequestId.Add(pendingStatusList.GetString(0));
      }
    }
  }
}
希望这对你有帮助

要在 pendingStatusList["ColumnName"] 中指定的列名

  try
            {
                conn.Open();
                pendingStatusList = cmdPendingStatus.ExecuteReader();
                if (pendingStatusList.HasRows)
                {
                    while (pendingStatusList.Read())
                    {
                        lstPendingRequestId.Add(pendingStatusList["ColumnName"]);
                    }
                }
            }

您无法在 ExecuteReader 中更改属性,但可以读取如下值:

var value = Reader[1];

如果这是您要执行的操作,则始终可以更改 var 的值并编写另一个存储过程来保存更改。

try
{
     DataSet dsStatusPending = new DataSet();
     StoredProcedure cmdPendingStatus = new StoredProcedure();
     cmdPendingStatus.ProcName = "sp_Name";
     dsStatusPending = DbManager.ExecuteDataSet(cmdPendingStatus);
     if (dsStatusPending.Tables[0].Rows.Count > 0)
     {
          foreach (DataRow rowToInsert in dsStatusPending.Tables[0].Rows)
          {                  
              if (rowToInsert["ColumnName"] != System.DBNull.Value && rowToInsert["ColumnName"].ToString().ToUpper() == "I")
              {
                   //User Defined Code Goes Here
              }
           }
      }

这就是我进入特定列的方式。