Я присоединяюсь к двум таблицам - Contact и RetailTrainingUserLevelMap в инструкции Select.«Строка ввода не была в правильном формате» при использовании SqlDataReader и метки
(Общий столбец в обоих является RetailTrainingUserLevelID целое)
ВЫБОР Contact.IntranetUserName, Contact.CompanyName, RetailTrainingUserLevelMap.RetailTrainingUserLevel
от контакта
INNER JOIN RetailTrainingUserLevelMap ПО Contact.RetailTrainingUserLevelID = RetailTrainingUserLevelMap .RetailTrainingUserLevelID
AND Contact.RetailTrainingUserLevelID = RetailTrainingUserLevelMap.RetailTrai ningUserLevelID
WHERE (Contact.IntranetUserName = @IntranetUserName)
Если я бегу это заявление через Visual Studio Query Builder (окно тест запроса) и введите значение "IntranetUserName" я получаю:
IntranetUserName:
Джон Джо
НазваниеКомпании:
Acme Inc.
RetailTrainingUserLevel:
менеджер
Это мой желаемый результат, до сих пор так хорошо.
Если я использую этот же оператор выбора в моем .cs CodeBehind используя 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)
Спасибо за ваше время и знания.
Привет Стэн, "RetailTrainingUserLevel" установлен, чтобы не допустить нуль. Я попробовал ваше предложение кода и все еще получаю сообщение об ошибке: «Входная строка не в правильном формате». на userLevelLabel.Text + = reader ["RetailTrainingUserLevel"]. ToString(); Я смущен, почему возникает проблема. Читатель хочет получить значение RetailTrainingUserLevel, которое в таблице установлено на varchar - возможные значения - это Manager, Supervisor, Principal, которые кажутся мне струнами. Не уверен, что еще попробовать. Правильно ли настроен оператор JOIN? Спасибо за любые другие идеи, которые у вас могут быть ... – Doug