在标签中调用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();
}
您应该使用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);
}
}