在标签中调用sql查询

时间:2011-10-29 13:36:12

标签: c# asp.net sql

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

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();

}

3 个答案:

答案 0 :(得分:3)

您应该使用ExecuteScalar。您还应该通过将它们包含在using语句中来正确处理IDis连接和sql命令等IDisposable资源:

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();
}

答案 1 :(得分:0)

您的查询未接收参数,而您正在传递参数。

在这种情况下,你也不要做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());
  }
}

答案 2 :(得分:0)

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

    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);
        }
    }