首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET标签显示"System.Data“消息

ASP.NET标签显示"System.Data“消息
EN

Stack Overflow用户
提问于 2012-01-12 04:24:12
回答 6查看 925关注 0票数 2

在试图显示数据库数据时,asp:label上显示了一条奇怪的消息。在"System.Data.SqlClient.SqlDataReader"期间,asp:label将从数据源中填充,但是显示以下消息/文本page_load

是什么导致了这一切?

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

代码语言:javascript
复制
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;

        }
    }

它调用以下方法:

代码语言:javascript
复制
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;
        }

并使用此存储过程:

代码语言:javascript
复制
ALTER PROCEDURE [hgomez].[GetQuestionnaireName] 
    (
    @QUEST_ID int
    )   
AS
    /*SET NOCOUNT ON;*/
    SELECT QuestionnaireName FROM [Questionnaires] WHERE QuestionnaireID = @QUEST_ID
    RETURN
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-12 04:31:19

代码语言:javascript
复制
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[0].ToString();
        }
        _productConn.Close();
        return returnValue;
    }

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

票数 3
EN

Stack Overflow用户

发布于 2012-01-12 04:32:13

您需要使用GetValue方法的SqlDataReader

代码语言:javascript
复制
SqlDataReader qName = getData(myCommand);
while (qName.Read())
{
   returnValue = qName.GetValue(0).ToString();
}
票数 2
EN

Stack Overflow用户

发布于 2012-01-12 04:30:10

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

您应该像这样返回值

代码语言:javascript
复制
returnValue = qName.GetString(0);

或者你也可以

代码语言:javascript
复制
returnValue = qName.GetString("QuestionnaireName");
//this is better to name fields

或者你可以简单地写

代码语言:javascript
复制
returnValue = qName[0].ToString();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8830101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档