0

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)

あなたの時間と知識に感謝します。

4

1 に答える 1

0

確かにreader["RetailTrainingUserLevel"]はDBNullではありませんか?

別の文字列に追加する前に、.ToString()を実行することをお勧めします。

私はただやる

userLevelLabel.Text += reader["RetailTrainingUserLevel"].ToString();
于 2009-08-20T16:11:41.220 に答える