HGo*_*mez 2 c# asp.net return executereader
当QuestionnaireID匹配我的查询时,我正在使用ExecuteReader返回QuestionText的值.(参见数据库设计)
但是我的问题是,当我运行项目时,我的ExecuteReader只返回输入的最后一个值.例如,如果我要在问卷ID为1下创建3个问题(A,B,C).ExecuteReader将仅返回问题C.
如何返回QuestionText列中具有相同问卷ID的所有值?
数据库设计

****.**CS
public string GetQuestionName(int QuestionnaireID)
{
string returnvalue = string.Empty;
SqlCommand myCommand = new SqlCommand("GetQuestion", _productConn);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.Add(new SqlParameter("@QUEST_ID", SqlDbType.Int));
myCommand.Parameters[0].Value = QuestionnaireID;
_productConn.Open();
SqlDataReader test = myCommand.ExecuteReader();
while (test.Read())
{
returnvalue = test.GetString(0);
}
_productConn.Close();
return returnvalue;
}
Run Code Online (Sandbox Code Playgroud)
存储过程
USE [devworks_oscar]
GO
/****** Object: StoredProcedure [hbo].[GetQuestion] Script Date: 11/12/2011 13:12:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [hgomez].[GetQuestion]
(
@QUEST_ID int
)
AS
/*SET NOCOUNT ON;*/
SELECT QuestionText FROM [Questions] WHERE QuestionnaireID = @QUEST_ID
RETURN
Run Code Online (Sandbox Code Playgroud)
提前致谢.
您的读者返回所有值但代码 -
returnvalue = test.GetString(0);
Run Code Online (Sandbox Code Playgroud)
将继续returnvalue使用从datareader返回的下一个值覆盖变量,这样您将只剩下最后一个值.
你可以创建一个字符串列表 -
List<string> list = new List<string>();
Run Code Online (Sandbox Code Playgroud)
然后添加返回列表的每个值 -
while (test.Read())
{
list.Add(test.GetString(0));
}
Run Code Online (Sandbox Code Playgroud)
然后从函数返回列表而不是字符串.