«Входная строка была не в правильном формате» при использовании SqlDataReader и Label - PullRequest
0 голосов
/ 20 августа 2009

Я объединяю две таблицы - Contact и RetailTrainingUserLevelMap в операторе Select.

(общий столбец в обоих - это RetailTrainingUserLevelID int)

ВЫБРАТЬ Contact.IntranetUserName, Contact.CompanyName, RetailTrainingUserLevelMap.RetailTrainingUserLevel

ОТ КОНТАКТА

ВНУТРЕННЕЕ СОЕДИНЕНИЕ RetailTrainingUserLevelMap ON Contact.RetailTrainingUserLevelID = RetailTrainingUserLevelMap.RetailTrainingUserLevelID

AND Contact.RetailTrainingUserLevelID = RetailTrainingUserLevelMap.RetailTrainingUserLevelID

ГДЕ (Contact.IntranetUserName = @IntranetUserName)


Если я выполню этот оператор через Visual Studio Query Builder (окно тестового запроса) и введу значение для «IntranetUserName», я получу:

* +1018 * IntranetUserName:
Джон Джо

CompanyName:
Acme Inc.

RetailTrainingUserLevel:
Менеджер

Это мой желаемый вывод, пока все хорошо.

Если я использую этот же оператор выбора в моем коде .cs, используя 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 + = reader ["RetailTrainingUserLevel"];

Какой синтаксис C # необходимо изменить здесь, чтобы я мог правильно связать это значение с моим userLevelLabel?

Примечание: RetailTrainingUserLevelID int
RetailTrainingUserLevel varchar (50)

Спасибо за ваше время и знания.

1 Ответ

0 голосов
/ 20 августа 2009

Вы уверены, что читатель ["RetailTrainingUserLevel"] не DBNull ??

может захотеть сделать .ToString () для него перед попыткой добавить его в другую строку.

Я бы просто сделал

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