c# - 为什么这个查询返回-1?

标签 c# sql winforms

我正在尝试使用此代码获取表类别的最大 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/

相关文章:

c# - 影响 ListView header 的 Windows 主题

c# - 为什么我总是收到异常?

c# - 如何在 C# 中显示步骤时对整数数组进行冒泡排序

c# - 获取 Twain 1.x 已安装驱动程序列表

mysql - SQL SUM 查询修改

c# - 如何将存储过程添加到 EF .edmx?

java - 从 Java 运行 DELETE 时出现 SQL 语法错误

sql - 生成 PL/SQL 脚本以从许多相关表中创建记录副本

c# - REGEX C#(匹配开头和结尾单词)

c# - DefaultAuthenticateScheme 未设置