在标签中调用SQL查询

本文关键字:SQL 查询 调用 标签 | 更新日期: 2023-09-27 18:12:57

请帮助我,我写这段代码,但它不工作什么是我的错误,什么是正确的代码?

protected void Page_Load(object sender, EventArgs e)
{
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = new SqlConnection(Class1.CnnStr);
    cmd.CommandText = "SELECT MAX(Code) FROM Customer";
    cmd.Connection.Open();
    cmd.Parameters.AddWithValue(Code_lbl.Text,"@MAX(Code)"+1);
    cmd.ExecuteNonQuery();
}

在标签中调用SQL查询

您应该使用ExecuteScalar。此外,您应该通过使用语句将sql连接和sql命令等可处置资源包装起来:

using (var conn = new SqlConnection(Class1.CnnStr))
using (var cmd = conn.CreateCommand())
{
    conn.Open();
    cmd.CommandText = "SELECT MAX(Code) FROM Customer";
    var result = cmd.ExecuteScalar();
}

您的查询没有接收参数,而您正在传递一个参数。

在这种情况下也不执行ExecuteNonQuery。ExecuteNonQuery用于插入或修改数据的语句,但您的语句只是返回单个值。你需要的是ExecuteScalar,它从你的查询中返回一个结果。

using(SqlConnection conn = new SqlConnection(Class1.CnnStr))
{
  conn.Open();
  using(SqlCommand cmd = new SqlCommand("SELECT MAX(Code) FROM Customer",conn))
  {
    cmd.Connection.Open();  
    int max = Convert.ToInt32(cmd.ExecuteScalar().ToString());
  }
}

如果要解析参数,请执行如下操作

    string commandText = "SELECT MAX(Code) FROM Customer WHERE ShopID = @ID;";
    using (SqlConnection connection = new SqlConnection(connectionString))
    using(SqlCommand command = new SqlCommand(commandText, connection))
    {
        command.Parameters.AddWithValue("@ID", id); // e.g id is int = 23;
        try
        {
          connection.Open();
          var maxCode= command.ExecuteScalar();
          Console.WriteLine("Max: {0}", maxCode);
        }
        catch (Exception ex)
        {
           Console.WriteLine(ex.Message);
        }
    }