我正在尝试使用此代码获取表类别的最大 id
string maxid = "";
string query = "SELECT MAX(Cat_ID) + 1 FROM Category";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["JokerCafe"].ConnectionString);
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(query, conn);
maxid = cmd.ExecuteNonQuery().ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
return maxid;
我在 sql 中运行此查询,它返回精确值,但当尝试从代码执行它时,它返回 -1。请指导我这是怎么回事?
最佳答案
ExecuteNonQuery()
将返回受影响的行数。例如,如果您尝试通过 ExecuteNonQuery() 方法执行任何更新语句或删除语句,那么它将返回受影响的行数。
但是,如果您想从特定字段获取值,那么您需要尝试 ExecuteScalar()
方法。它将返回Object
类型值。使用此方法您只能获取单个值记录。
object val = command.ExecuteScalar();
if (val != null)
{
//Do your stuff here.
}
关于c# - 为什么这个查询返回-1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23508026/