请帮助我,我写这段代码,但它不起作用我的错误是什么,正确的代码是什么?
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();
}
答案 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);
}
}