2017-03-31 11 views
0

で、正しい形式ではありませんでした正しい形式。ここで入力文字列の形式は1と2

は、この例外はReaderによって返される値はInt32に変換できないことを意味し、私のコード

public int transCode = 0; 

     con.Open(); 
     cmd = new SqlCommand("SELECT MAX(TransactionCode) FROM TRANSACTIONS",con); 
     rdr = cmd.ExecuteReader(); 

     while (rdr.Read()) 
     { 
      transCode = Convert.ToInt32(rdr[0].ToString()); // Here is the  line where the problem go 
     } 

     con.Close(); 
+1

'rdr [0]'の内容を確認しましたか? – CNuts

+1

データベースにはどのようなタイプのTransactionCodeがありますか?なぜそれを文字列に変換するのですか?すでに 'int'の場合は' rdr.GetInt32(0) 'を使用してください。それはあなたがそれを1に変換したいので、なぜあなた自身に尋ねなければならない。 –

+1

デバッグのベストは、SQL Server Management Studio(SSMS)を使用して、新しいクエリビューにクエリを入力することでした。デバッグメッセージはSSMSではC#よりずっと優れています。 SSMSの結果を確認して、TransactionCodeの値がすべて整数であることを確認します。 – jdweng

答えて

2

です。 NULL、または非整数のTransactionCode値があります。デバッガの値を調べて、値が実際にどのように見えるかを確認したり、常に値がInt32になっているかどうかを再検討してください。

関連する問題