C# 从数据库ASP.NET/C获取多个值

C# 从数据库ASP.NET/C获取多个值,c#,asp.net,sql-server,stored-procedures,webforms,C#,Asp.net,Sql Server,Stored Procedures,Webforms,我正在尝试使用从SQL Server数据库获取/返回多个值,并将它们显示在ASP.NET页面上 我使用存储过程在数据库端执行SELECT命令 我能够返回与变量@PERSON匹配的第一个值,但每次只返回一行 任何帮助都将不胜感激 数据库处理程序类 存储过程 return.aspx 您应该改用sql datareader: ExecuteScalar只返回第一个结果,而reader按循环返回每个结果,直到 reader.Read==false e、 g: DataReader data_reade

我正在尝试使用从SQL Server数据库获取/返回多个值,并将它们显示在ASP.NET页面上

我使用存储过程在数据库端执行SELECT命令

我能够返回与变量@PERSON匹配的第一个值,但每次只返回一行

任何帮助都将不胜感激

数据库处理程序类

存储过程

return.aspx


您应该改用sql datareader:

ExecuteScalar只返回第一个结果,而reader按循环返回每个结果,直到 reader.Read==false

e、 g:

 DataReader data_reader= MySqlCommand.ExecuteReader( ); 
   while(data_reader.Read())  
  {
       ...
  }         

存储过程是为id返回一行还是返回多行?最终,您需要对结果进行循环。如果存储过程每次调用返回一条记录,则需要在aspx页面中循环ID。如果存储过程返回多行,则可以使用和sqlDataReader而不是ExecuteScalar调用。循环返回的行,并将它们添加到某种集合或列表中。然后将其返回到您的页面。但是,您仍然需要修改您的aspx页面来处理集合。

您可以使用或来填充数据集,但是对于webforms,如果完全通过使用将数据访问从页面中分离出来,您可能会得到更好的服务。

我将GetItem方法更改如下:

public List<string> GetItemName(int PersonID)
{
   List<string> returnvalues = new List<string>();
   SqlCommand myCommand = new SqlCommand("GetItem", _productConn);
   myCommand.CommandType = CommandType.StoredProcedure;
   myCommand.Parameters.Add(new SqlParameter("@PERSON", SqlDbType.Int));
   myCommand.Parameters[0].Value = PersonID;

   _productConn.Open();
   DataReader dr = myCommand.ExecuteReader(); 
   While(dr.Read() )  
   {
       returnvalues.Add(dr[0].ToString()); 
   }         

   _productConn.Close();
   return returnvalues;
 }
namespace test
{
    public partial class Final_Page : System.Web.UI.Page
    {
        MainSQL GetInfo;

        protected void Page_Load(object sender, EventArgs e)
        {
            int PersonId = (int)Session["PersonID"];
            GetInfo = new MainSQL();
            string itemname = GetInfo.GetItemName(PersonId);
            ReturnItemName.Text = itemname;

        } // End Page_Load

    } // End Class 

} // End Namespace
 DataReader data_reader= MySqlCommand.ExecuteReader( ); 
   while(data_reader.Read())  
  {
       ...
  }         
public List<string> GetItemName(int PersonID)
{
   List<string> returnvalues = new List<string>();
   SqlCommand myCommand = new SqlCommand("GetItem", _productConn);
   myCommand.CommandType = CommandType.StoredProcedure;
   myCommand.Parameters.Add(new SqlParameter("@PERSON", SqlDbType.Int));
   myCommand.Parameters[0].Value = PersonID;

   _productConn.Open();
   DataReader dr = myCommand.ExecuteReader(); 
   While(dr.Read() )  
   {
       returnvalues.Add(dr[0].ToString()); 
   }         

   _productConn.Close();
   return returnvalues;
 }