2009-08-20 10 views
0

私はSelectステートメントのContactとRetailTrainingUserLevelMapの2つのテーブルに参加しています。SqlDataReaderとLabelを使用しているときに「入力文字列が正しい形式ではありませんでした」

(両方における共通の列がRetailTrainingUserLevelIDの整数である)

SELECT Contact.IntranetUserName、Contact.CompanyName、RetailTrainingUserLevelMap.RetailTrainingUserLevel

接触

INNER FROM RetailTrainingUserLevelMap ON Contact.RetailTrainingUserLevelID = RetailTrainingUserLevelMapをJOIN .RetailTrainingUserLevelID

AND Contact.RetailTrainingUserLevelID = RetailTrainingUserLevelMap.RetailTrai ningUserLevelID

私はVisual Studioのクエリビルダ(テストクエリウィンドウ)を介してこのステートメントを実行し、 "IntranetUserName" に値を入力した場合、私が取得する(Contact.IntranetUserName = @IntranetUserName)


IntranetUserName:
ジョン・ジョー・

会社名:
アクメ株式会社

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"];

何をC#ここで変更する必要があるので、その値を適切にuserLevelLabelにバインドする必要がありますか?

注:あなたの時間と知識のため RetailTrainingUserLevelID int型
RetailTrainingUserLevel VARCHAR(50)

感謝。

答えて

0

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

他の文字列に追加しようとする前に.ToString()を実行したい場合があります。私はちょうど

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

こんにちはスタンを行うだろう

、 "RetailTrainingUserLevelは" ヌル許可しないように設定されています。 私はあなたのコードの提案を試みましたが、まだエラーが発生しています: "入力文字列が正しい形式ではありませんでした。 userLevelLabel.Text + = reader ["RetailTrainingUserLevel"]。ToString(); なぜ問題があるのか​​混乱しています。テーブルにはvarcharに設定されている "RetailTrainingUserLevel"値が必要です。可能な値は、すべて私にとって文字列のように見えるManager、Supervisor、Principalです。他に何を試すかわからない私のJOIN文が正しく設定されていませんか?あなたが持っているかもしれない他のアイデアありがとう... – Doug

関連する問題