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包含任何行?否则,您将尝试转换NULLint失败。

您的代码应如下所示:

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 回答
0

使用coalesce您可以实现此目的:

con.Open();
cmd.Connection = con;
cmd.CommandText = "select coalesce(max(user_id),0)+1 from user_master";
int user_id = int.Parse(cmd.ExecuteScalar().ToString());
txt_user_id.Text = user_id.ToString();
con.Close();
于 2015-12-01T09:12:46.227 回答