ZhangQin

不经一番寒彻骨,哪得梅花扑鼻香

导航

学习笔记(一)

 

注册页面的完成小结

参考书目:ASP.NET通用模块及典型系统开发   张蓓 编著

                   SQL SERVER 2000 数据库教程      唐学忠 主编

参考资源:网上资源

本机运行环境:vwd2005 express sql server2005

书中代码运行环境:vs2003sql server2000

把书上的代码搬到自己的机子上,结果没法运行,错误百出。。。,于是开始逐个修改,总结如下:

一、书中代码Register1.aspx.cs

       protected System.Web.UI.WebControls.TextBox tbUsername;等定义语句应删掉,否则运行时报错,提示这些变量已经在命名空间中定义了。

二、添加两个引用 System.Ttext System.Security.Cryptography,否则字符串加密函数Encrypt的代码不被识别。

三、创建的存储过程全跑到master数据库去了,解决办法:修改存储过程加上如下语句:

                    Use Dbname   -------需添加存储过程的数据库名

                    Go

四、没有正常连接上数据库,解决办法如下:

    1、将sql server 2005 的外围设置中的远程连接改为 同时使用TCP\IPName Pipe.

    2、修改sql server的登录模式为混合模式,修改办法是:打开sql管理器、右键单击服务器名,在下拉菜单中选择属性,修改,重启sql server 服务

    3、启用sa帐号

    4、连接字段为:data source=.\\sqlexpress;user id=sa;password=   ;initial catalog=Dbname

五、cmd.Parameters.Add("@username", tbusername.Text)改为
          cmd.Parameters.AddWithValue("@username", tbusername.Text)否则出现警告错误。

Register.aspx.cs代码如下:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Security.Cryptography;

namespace book05
{

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            tbusername.Attributes.Add("size", "40");
            tbpassword.Attributes.Add("size", "40");
            tbpassword2.Attributes.Add("size", "40");
            tbrealname.Attributes.Add("size", "40");
            tbphoneno.Attributes.Add("size", "40");
            tbEmail.Attributes.Add("size", "40");
            tbAddress.Attributes.Add("size", "40");
       
        }

        protected void btnRegister_Click(object sender, EventArgs e)
        {
            string connStr = "data source=.\\sqlexpress;user id=sa;password=123456;initial catalog=register2";
            SqlConnection conn = new SqlConnection(connStr);

            SqlCommand cmd = new SqlCommand("CreateUser", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@username", tbusername.Text);
            cmd.Parameters.AddWithValue("@password", Encrypt(tbpassword.Text));
            cmd.Parameters.AddWithValue("@realname", tbrealname.Text);
            cmd.Parameters.AddWithValue("@gender", ddlgender.SelectedValue);
            cmd.Parameters.AddWithValue("@phoneno", tbphoneno.Text);
            cmd.Parameters.AddWithValue("@email", tbEmail.Text);
            cmd.Parameters.AddWithValue("@address", tbAddress.Text);

            SqlParameter paramOut = cmd.Parameters.AddWithValue("@return_value", "");
            paramOut.Direction = ParameterDirection.ReturnValue;

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                if ((int)cmd.Parameters["@return_value"].Value == 0)
                {
                    Response.Write("注册成功");
                }
                else
                {
                    Response.Write("该用户名已存在");
                }
            }
            catch (SqlException ex)
            {
                Response.Write("数据访问出错!\n");
            }
            catch (Exception ex)
            {
                Response.Write("错误!\n");
            }
            finally
            {
                conn.Close();
            }
        }
        private string Encrypt(string strInput)
        {
            byte[] b = Encoding.UTF8.GetBytes(strInput);
            MD5 md5 = new MD5CryptoServiceProvider();
            return Encoding.UTF8.GetString(md5.ComputeHash(b));
        }
   }
}

posted on 2006-12-24 02:56    阅读(399)  评论(0)    收藏  举报