简体   繁体   English

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

[英]Get Multiple Values From Database ASP.NET/C#

I am trying to get/return multiple values from an SQL-Server database using and display them on an ASP.NET page. 我正在尝试使用SQL Server数据库获取/返回多个值,并将其显示在ASP.NET页上。

I am using a stored procedure to perform the SELECT command on the Database side. 我正在使用存储过程在数据库端执行SELECT命令。

I am able to return the first value that matches the variable @PERSON but only one row is returned each time. 我能够返回与变量@PERSON匹配的第一个值,但每次仅返回一行。

Any help would be much appreciated. 任何帮助将非常感激。

Database handler class 数据库处理程序类

public MainSQL()
{
       _productConn = new SqlConnection();
       _productConnectionString += "data source=mssql.database.co.uk;InitialCatalog=test_data;User ID=username;Password=password";
       _productConn.ConnectionString = _productConnectionString;
}
public string GetItemName(int PersonID)
{
     string returnvalue = string.Empty;
     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();
     returnvalue = (string)myCommand.ExecuteScalar();             
     _productConn.Close();
     return (string)returnvalue;
 }

Stored Procedure 储存程序

USE [test_data]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [ppir].[GetItem]    
    (
    @PERSON int
    )   
AS
    /*SET NOCOUNT ON;*/
    SELECT Description FROM [Items] WHERE PersonID = @PERSON
    RETURN

return.aspx return.aspx

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

you should use sql datareader instead.: 您应该改用sql datareader。

ExecuteScalar returns you only the first result while reader returns you each result by loop until reader.Read()==false. ExecuteScalar仅返回第一个结果,而Reader则循环循环返回每个结果,直到reader.Read()== false为止。

eg : 例如:

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

I Change your GetItem method like this : 我这样更改您的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;
 }

Does your stored procedure return one row for the id or does it return multiple rows? 您的存储过程是返回ID的一行还是返回多行? Ultimately you will need to loop over your results. 最终,您将需要遍历结果。 If the stored procedure returns one record per call, then you need to loop over the ids in the aspx page. 如果存储过程每次调用返回一条记录,则需要遍历aspx页中的id。 If the stored procedure returns multiple rows, then you can use and sqlDataReader instead of the ExecuteScalar call. 如果存储过程返回多行,则可以使用和sqlDataReader代替ExecuteScalar调用。 Loop over the rows that were return and add them to some sort of a collection or list. 循环返回的行,并将其添加到某种类型的集合或列表中。 Then return it to your page. 然后将其返回到您的页面。 You will still have to modify your aspx page to handle the collection, however. 但是,您仍然必须修改aspx页面以处理集合。

你可以使用一个SqlDataReader的 ,或SqlDataAdapter的填写一个DataSet ,虽然对于web表单,你可能会更好地通过完全由使用的方式分离您的网页数据访问服务的ObjectDataSource

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 来自ASP.NET C#中数据库的highcharts值 - highcharts values from database in asp.net c# 如何将多个值从listview列存储到数据库asp.net的单个条目C# - how to store multiple values from listview column to a single entry to database asp.net c# 如何使用c#将asp.net中数据库中的数据赋值到二维数组? - How to assing values to 2 dimensional array with data from database in asp.net using c#? 如何使用 ASP.NET 从 SQL 服务器数据库中检索和显示 GridView 中的值 - How to retrieve and display values in GridView from SQL Server database in ASP.NET using C# 将变量中的值传递给SQL Server数据库的C#,ASP.NET中的插入查询 - Passing values from variables to Insert query in C#, ASP.NET for SQL Server database ASP.NET C#从数据库检索多个值并添加会话 - ASP.NET C# retrieve multiple value from database and add in session 如何从asp.net C#中的数据库下载多个文件 - how to download multiple files from database in asp.net c# ASP.NET获取c#方法的复选框值 - ASP.NET get checkbox values to c# method 如何从 C# (ASP.NET) 中的函数返回多个值? - How to return multiple values from a function in C# (ASP.NET)? 从单选按钮ASP.NET C#MVC4检索多个模型值 - Retrieve multiple model values from radio button asp.net c# mvc4
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM