SelectステートメントでContactとRetailTrainingUserLevelMapの2つのテーブルを結合しています。
(両方の共通の列はRetailTrainingUserLevelID intです)
SELECT Contact.IntranetUserName、Contact.CompanyName、RetailTrainingUserLevelMap.RetailTrainingUserLevel
連絡先から
INNER JOIN RetailTrainingUserLevelMap ON Contact.RetailTrainingUserLevelID = RetailTrainingUserLevelMap.RetailTrainingUserLevelID
AND Contact.RetailTrainingUserLevelID = RetailTrainingUserLevelMap.RetailTrainingUserLevelID
WHERE(Contact.IntranetUserName = @IntranetUserName)
このステートメントをVisualStudioクエリビルダー(テストクエリウィンドウ)で実行し、「IntranetUserName」の値を入力すると、次のようになります。
IntranetUserName:
John Joe
会社名:
Acme Inc.
RetailTrainingUserLevel:
マネージャー
これは私の望ましい出力ですが、これまでのところ良好です。
SqlDataReaderを使用して.csコードビハインドでこれと同じselectステートメントを使用して、ラベルを次のようにこれらの列の一部にバインドすると、次のようになります。
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"];
その値をuserLevelLabelに適切にバインドできるようにするには、ここでどのC#構文を変更する必要がありますか?
注:RetailTrainingUserLevelID int
RetailTrainingUserLevel varchar(50)
あなたの時間と知識に感謝します。