0

私は以下の機能を持っています

SqlConnection cn = new SqlConnection(constring);
cn.Open();
SqlCommand cmd = new SqlCommand("select max(ID) from EP_PATTERNS ", cn);
int h = (int)cmd.ExecuteScalar() + 1;
txtID.Text = h.ToString();
cn.Close();

このエラーを修正する方法:

指定されたキャストは無効です。

4

3 に答える 3

3

あなたのコードを考えると、ロジックを修正する最も簡単な方法は、SQLを編集することだと思います

select ISNULL(max(ID),0) from EP_PATTERNS

これが何をするのかをよりよく理解するために、SSMS で次の SQL を実行できます。

DECLARE @table table (ID int);
SELECT MAX(ID) FROM @table;
SELECT ISNULL(MAX(ID), 0) FROM @table;
于 2013-07-18T09:02:36.483 に答える
2

テーブルEP_PATTERNSに行が含まれているかどうか そうしないと、キャストしようとしてNULL失敗intします。

コードは次のようになります。

SqlConnection cn = new SqlConnection(constring);
cn.Open();
SqlCommand cmd = new SqlCommand("select max(ID) from EP_PATTERNS ", cn);
var value = (int?)cmd.ExecuteScalar();
int maxId = value.HasValue ? value.Value + 1 : 0;  //Increase value or default it to zero
txtID.Text = maxId.ToString();
cn.Close();
于 2013-07-18T08:58:47.547 に答える