C# 使用SqlDataReader和Label时“输入字符串格式不正确”

C# 使用SqlDataReader和Label时“输入字符串格式不正确”,c#,label,inner-join,string-formatting,C#,Label,Inner Join,String Formatting,我在Select语句中连接两个表——Contact和RetailTrainingUserLevelMap 两者中的公共列都是RetailTrainingUserLevelID int 选择Contact.IntranetUserName、Contact.CompanyName、RetailTrainingUserLevelMap.RetailTrainingUserLevel 从接触 联系人上的内部联接RetailTrainingUserLevelMap.RetailTrainingUserLe

我在Select语句中连接两个表——Contact和RetailTrainingUserLevelMap

两者中的公共列都是RetailTrainingUserLevelID int

选择Contact.IntranetUserName、Contact.CompanyName、RetailTrainingUserLevelMap.RetailTrainingUserLevel

从接触

联系人上的内部联接RetailTrainingUserLevelMap.RetailTrainingUserLevelID=RetailTrainingUserLevelMap.RetailTrainingUserLevelID

和Contact.RetailTrainingUserLevelID=RetailTrainingUserLevelMap.RetailTrainingUserLevelID

其中Contact.IntranetUserName=@IntranetUserName

如果我通过Visual Studio Query Builder在测试查询窗口中运行此语句,并为IntranetUserName输入一个值,我会得到:

Intranet用户名: 约翰·乔

公司名称: Acme公司

RetailTrainingUserLevel: 经理

这是我想要的输出,到目前为止还不错

如果我在.cs codebehind中使用相同的select语句,使用SqlDataReader将标签绑定到以下列:

SqlCommand comm;
        SqlConnection conn;
        string intranetConnectionString = ConfigurationManager.ConnectionStrings["DataConnect"].ConnectionString;
        conn = new SqlConnection(intranetConnectionString);
        comm = new SqlCommand("SELECT Contact.IntranetUserName, Contact.CompanyName, RetailTrainingUserLevelMap.RetailTrainingUserLevel FROM Contact INNER JOIN RetailTrainingUserLevelMap ON Contact.RetailTrainingUserLevelID = RetailTrainingUserLevelMap.RetailTrainingUserLevelID AND Contact.RetailTrainingUserLevelID = RetailTrainingUserLevelMap.RetailTrainingUserLevelID WHERE (Contact.IntranetUserName = @IntranetUserName)", conn);

        comm.Parameters.Add("@IntranetUserName", System.Data.SqlDbType.VarChar, 50);
        comm.Parameters["@IntranetUserName"].Value = memberLoginName;

        conn.Open();
        SqlDataReader reader = comm.ExecuteReader();
        while (reader.Read())
        {
            memberCompanyNameLabel.Text += reader["CompanyName"];
           userLevelLabel.Text += reader["RetailTrainingUserLevel"];
        }

        reader.Close();
        conn.Close();
我得到的错误是输入字符串的格式不正确。在这里: userLevelLabel.Text+=读取器[RetailTrainingUserLevel]

这里需要更改什么样的C语法,以便将该值正确绑定到userLevelLabel

注: RetailTrainingUserLevelID int RetailTrainingUserLevel varchar 50

感谢您的时间和知识。

您确定reader[RetailTrainingUserLevel]不是DBNull

在尝试将其添加到另一个字符串之前,可能需要执行。ToString

我会的

userLevelLabel.Text += reader["RetailTrainingUserLevel"].ToString();

您好,RetailTrainingUserLevel设置为不允许为空。我尝试了您的代码建议,但仍然得到错误:输入字符串的格式不正确。在userLevelLabel.Text+=reader[RetailTrainingUserLevel].ToString;我不明白为什么会有问题。读者需要一个RetailTrainingUserLevel值,该值在表中设置为varchar-可能的值是Manager、Supervisor、Principal,它们在我看来都像字符串。不知道还有什么可以尝试的。我的JOIN语句是否设置不正确?谢谢你的任何其他想法。。。