ASP.NET登录WebForm报错CS0136:无法声明局部变量‘cmd’
解决ASP.NET WebForm登录页面的CS0136错误
你遇到的Error CS0136错误,原因是方法BtnIngresar_Click的参数里已经定义了SqlCommand cmd,但你在方法内部又重新声明了同名的局部变量SqlCommand cmd = new SqlCommand(...),同一个作用域内不允许存在同名变量,导致命名冲突。
修正步骤:
- 移除按钮点击方法参数里的
SqlCommand cmd——ASP.NET WebForm的按钮点击事件标准签名仅需object sender和EventArgs e,不需要额外传入SqlCommand参数。 - 方法内部的
cmd变量可正常保留,参数里的同名变量移除后就不会再产生冲突。 - 推荐使用
using语句管理数据库连接和命令对象,自动释放资源,避免手动关闭连接可能引发的异常。
修正后的完整代码:
using System; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace CONDOMINIO { public partial class LOGIN : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void BtnIngresar_Click(object sender, EventArgs e) { string conectar = ConfigurationManager.ConnectionStrings["conexion"].ConnectionString; // 使用using自动释放连接和命令资源 using (SqlConnection sqlConectar = new SqlConnection(conectar)) using (SqlCommand cmd = new SqlCommand("INICIARS", sqlConectar) { CommandType = CommandType.StoredProcedure }) { sqlConectar.Open(); cmd.Parameters.Add("@NOMBRE", SqlDbType.VarChar, 30).Value = tbUsuario.Text; cmd.Parameters.Add("@CONTRASENNA", SqlDbType.VarChar, 16).Value = tbPassword.Text; using (SqlDataReader dr = cmd.ExecuteReader()) { if (dr.Read()) { // 添加用户会话 Session["usuariologueado"] = tbUsuario.Text; Response.Redirect("Index.aspx"); } else { lblError.Text = "用户名或密码错误"; } } } } } }
内容的提问来源于stack exchange,提问作者masipn
相关产品推荐
相关产品推荐

