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

标签 c# asp.net sql-server stored-procedures webforms

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

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

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

任何帮助将不胜感激。

数据库处理程序类

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;
 }

存储过程

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

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

最佳答案

你应该使用sql datareader来代替。:

ExecuteScalar 仅返回第一个结果,而 reader 通过循环返回每个结果,直到 reader.Read()==false。

例如:

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

关于c# - 从数据库获取多个值 ASP.NET/C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8104949/

相关文章:

c# - 线程和锁定资源

c# - 为什么我不能用相同的参数再次调用这个方法? (空引用)

sql-server - ColdFusion 执行不需要的 SQL 语句

sql - 选择 DISTINCT,返回整行

c# - 如何获得 LINQ to SQL submitchanges 的百分比?

ASP.NET MVC : How do you access the session from a different project within the solution?

asp.net - web.config 中 ApiURIs-ISAPI-Integrated-4.0 的多个路径

c# - 在 asp.net 中增加复选框的大小?

sql-server - SQL Server 中 ADSI 链接的可用字段

c# - Autowiring 属性注入(inject)