Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET标签显示“0”;系统数据“;消息_C#_Asp.net_Label - Fatal编程技术网

C# ASP.NET标签显示“0”;系统数据“;消息

C# ASP.NET标签显示“0”;系统数据“;消息,c#,asp.net,label,C#,Asp.net,Label,当我试图显示数据库中的数据时,asp:标签上显示了一条奇怪的消息。在页面加载期间,asp:标签将从数据源填充,但会显示以下消息/text“System.Data.SqlClient.SqlDataReader” 这可能是什么原因造成的 我在.aspx.cs页面的页面加载中编写了一个小方法。 labelName是显示此消息的标签: public partial class edit_questionnaire : System.Web.UI.Page { OsqarSQL

当我试图显示数据库中的数据时,asp:标签上显示了一条奇怪的消息。在页面加载期间,asp:标签将从数据源填充,但会显示以下消息/text“System.Data.SqlClient.SqlDataReader”

这可能是什么原因造成的

我在.aspx.cs页面的页面加载中编写了一个小方法。 labelName是显示此消息的标签:

public partial class edit_questionnaire : System.Web.UI.Page
    {
        OsqarSQL GetData;

        protected void Page_Load(object sender, EventArgs e)
        {
            string questionnaireId = Session["qID"].ToString();
            int qid = Convert.ToInt32(questionnaireId);
            GetData = new OsqarSQL();
            string name = GetData.GetQuestionnaireName(qid);
            labelName.Text = name;

        }
    }
它调用以下方法:

public string GetQuestionnaireName(int questionnaireId)
        {
            string returnValue = string.Empty;
            SqlCommand myCommand = new SqlCommand("GetQuestionnaireName", _productConn);
            myCommand.CommandType = CommandType.StoredProcedure;
            myCommand.Parameters.Add(new SqlParameter("@QUEST_ID", SqlDbType.Int));
            myCommand.Parameters[0].Value = questionnaireId;
            SqlDataReader qName = getData(myCommand);
            while (qName.Read())
            {
               returnValue = qName.ToString();
            }
            _productConn.Close();
            return returnValue;
        }
并使用以下存储过程:

ALTER PROCEDURE [hgomez].[GetQuestionnaireName] 
    (
    @QUEST_ID int
    )   
AS
    /*SET NOCOUNT ON;*/
    SELECT QuestionnaireName FROM [Questionnaires] WHERE QuestionnaireID = @QUEST_ID
    RETURN

您得到的是
SqlDataReader
输入为字符串。要从
SqlDataReader
中读取字符串,必须使用
GetString
方法。作为参数,您应该传递字段的索引。因为您只有一个字段要读取,所以在这里传递零

您应该像这样返回值

returnValue = qName.GetString(0);
returnValue = qName.GetString(0);
或者你也可以这样做

returnValue = qName.GetString("QuestionnaireName");
//this is better to name fields
或者你可以简单地写

returnValue = qName[0].ToString();

问题在下面的行中-它是数据读取器,而不是数据读取器返回的字符串:

returnValue = qName.ToString();
你应该把这个换成


您正在将SqlDataReader分配给returnValue,而不是读取该值。

您需要使用
SqlDataReader的
GetValue
方法

SqlDataReader qName = getData(myCommand);
while (qName.Read())
{
   returnValue = qName.GetValue(0).ToString();
}

这是因为您正在调用
SqlDataReader.ToString()
。这将返回类型的字符串,实际上是
“System.Data.SqlClient.SqlDataReader”


使用
returnValue=qName.GetString(0)

您正在转换
qName.ToString()
,您可以尝试
qName[0].ToString()
,其中[0]是存储过程中select列的索引

SqlDataReader qName = getData(myCommand);
while (qName.Read())
{
   returnValue = qName.GetValue(0).ToString();
}