C# ASP.NET标签显示“0”;系统数据“;消息
当我试图显示数据库中的数据时,asp:标签上显示了一条奇怪的消息。在页面加载期间,asp:标签将从数据源填充,但会显示以下消息/text“System.Data.SqlClient.SqlDataReader” 这可能是什么原因造成的 我在.aspx.cs页面的页面加载中编写了一个小方法。 labelName是显示此消息的标签: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
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();
}