QuestionnaireIDがクエリと一致するときにExecuteReaderを使用してQuestionTextの値を返しています。 (データベース設計を参照してください)ExecuteReaderが1つの値だけを返しています
しかし私の問題は、私がExecuteReaderプロジェクトを実行するときに入力された最後の値を返します。たとえば、questionnaireID 1の下に3つの質問(A、B、C)を作成する場合、ExecuteReaderは質問Cのみを返します。
同じQuestionnaireIDを持つQuestionText列のすべての値を返すにはどうすればよいですか?
データベース設計
****。CS **
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
おかげでストアド・プロシージャ
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;
}
dvance。
returnvalue = test.GetString(0);
あなたが最後の値だけが残されますので、DataReaderオブジェクトから返された次の値を持つreturnvalue
変数を上書きしていきます -
これは実際のコードですか?ループ内で 'returnvalue'を上書きするだけでなく、最後に割り当てられた値を返しますか? –