none
求助:封装字段时出错 RRS feed

  • 问题

  •  //创建Model类

    public class Model   {
     public Model()
     {
      //
      // TODO: 在此处添加构造函数逻辑
      //
     }
        private string adminUser = string.Empty;
        private string adminPwd = string.Empty;
        public string AdminUser {
            get {
                return this.AdminUser;
            }
            set {
                this.AdminUser = value;
            }
       
        }

        public string AdminPwd {
            get {
                return this.adminPwd;
            }
            set {
                this.adminPwd = value;
            }
        }
      
    }

    //创建DAL类

    public class DAL
    {
     public DAL()
     {
      //
      // TODO: 在此处添加构造函数逻辑
      //
     }
        private static SqlConnection con() {
            string str = "server=(local);database=user_db;uid=sa;pwd=;";
            SqlConnection conn = new SqlConnection(str);
            return conn;
        }

         public string ExecuteScalar(string str, SqlParameter[] sql) {
            SqlConnection con = DAL.con();
            try
            {
                con.Open();
                SqlCommand com = new SqlCommand(str, con);
                com.CommandType = CommandType.StoredProcedure;
                com.Parameters.AddRange(sql);
                return Convert.ToString(com.ExecuteScalar());
            }
            catch (Exception Error)
            {
                throw Error;
            }
            finally {
                con.Close();
            }
        }
    }

     

    //创建BLL类

    public class BLL
    {
     public BLL()
     {
      //
      // TODO: 在此处添加构造函数逻辑
      //
     }
        public static int sysLogin(Model m) {
            String str = "adminValid";
            SqlParameter[] sqlParameter ={
             new SqlParameter("adminUser",m.AdminUser),
             new SqlParameter("adminPwd",m.AdminPwd)
            };
            DAL d=new DAL();
            return Int32.Parse(d.ExecuteScalar(str,sqlParameter));
        
        }
    }

     

    //创建UI.aspx

    public partial class UI : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            Model m = new Model();
            m.AdminUser = this.TextBox1.ToString();
            m.AdminPwd = this.TextBox2.ToString();
            if (BLL.sysLogin(m) > 0)
            {
                Response.Write("成功");
            }
            else {
               Response.Write("失败");
            }

        }
    }

     

    //数据库表和储存过程的创建

    create database user_db

    use user_db

    create table admin(

     adminUser varchar(20),

     adminPwd varchar(120)

    )

    insert into admin(adminUser,adminPwd) values('myname','123456')

    create procedure adminValid(
      @adminUser varchar(20),
      @adminPwd varchar(120)
    )
    as select count(*) from admin where adminUser=@adminUser and adminPwd=@adminPwd

     

     

    怎么就登录不了呢?不但登录不了,还提示出错。

    错误信息:未处理的“System.StackOverflowException”类型的异常出现在 App_Code.kigitbwz.dll 中。

    错误位置在: set {
                this.AdminUser = value;
            }


    you are welcome
    2011年1月12日 15:17

答案

全部回复

  • public string AdminUser {
            get {
                return this.adminUser;
            }
            set {
                this.adminUser = value;
            }
        
        }

     

    • 已建议为答案 mazhou 2011年1月13日 9:38
    2011年1月12日 16:32
  • 没清楚看,真的不知道啊.多谢了
    you are welcome
    2011年1月13日 1:26
  • 修改过了,还是登陆不了.  提示:登陆失败;
    you are welcome
    2011年1月13日 1:44
  • protected void Button1_Click(object sender, EventArgs e)
        {
            Model m = new Model();
            m.AdminUser = this.TextBox1.ToString();
            m.AdminPwd = this.TextBox2.ToString();
            if (BLL.sysLogin(m) > 0)
            {
                Response.Write("成功");
            }
            else {
               Response.Write("成功");
            }

        }

    2011年1月13日 2:35
  • protected void Button1_Click(object sender, EventArgs e)
        {
            Model m = new Model();
            m.AdminUser = this.TextBox1.ToString();
            m.AdminPwd = this.TextBox2.ToString();
            if (BLL.sysLogin(m) > 0)
            {
                Response.Write("成功");
            }
            else {
               Response.Write("成功");
            }

        }

     

    怎么可以这样子写呢 ?

    else {
               Response.Write("成功");
            }

    这样子随意可以显示车成功,但是不符合逻辑.

     


    you are welcome
    2011年1月13日 6:04
  • create procedure adminValid(
      @adminUser varchar(20),
      @adminPwd varchar(120)
    )
    as return select count(*) from admin where adminUser=@adminUser and adminPwd=@adminPwd

     

    2011年1月13日 8:02
  • 数据存储过程是这样子写的.十分感谢你,我知道出错的原因了,那是因为没有导入命名空间.

    create procedure adminValid(
      @adminUser varchar(20),
      @adminPwd varchar(120)
    )
    as select count(*) from admin where adminUser=@adminUser  and adminPwd=@adminPwd


    you are welcome
    2011年1月15日 11:02
  • m.AdminUser = TextBox1.Text.ToString();
    m.AdminPwd = TextBox2.Text.ToString();
    2011年1月16日 7:21
  • m.AdminUser = TextBox1.Text.ToString();
    m.AdminPwd = TextBox2.Text.ToString();

    是啊,我怎么忘记呢?m.AdminUser 是字符型,怎么可以用 TextBox1.Text呢?忘记了类型转化


    you are welcome
    2011年1月16日 12:42