C# 从数据库ASP.NET/C获取多个值
我正在尝试使用从SQL Server数据库获取/返回多个值,并将它们显示在ASP.NET页面上 我使用存储过程在数据库端执行SELECT命令 我能够返回与变量@PERSON匹配的第一个值,但每次只返回一行 任何帮助都将不胜感激 数据库处理程序类 存储过程 return.aspxC# 从数据库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 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;
}