none
关于Asp.net Ajax 实现检查数据库中用户名是否存在的问题? RRS feed

  • 问题

  • 刚学asp.net ajax不久,想求一个实现检查数据库中用户名是否存在的代码或示例,
        不知道哪位好心人能帮助下?
    2009年2月27日 2:01

答案

  •  楼主你好! 你只要做下面这个sql 查询, 如果结果大于0 ,就说明 用户存在了。

     select count(usersId) from users where name=@name   

     // 假如 users 的主键是 userId  

    //  name 是 string  类型  ,最好用 SqlParameter , 或者 储存过程 会比较安全一些.

    // 希望对你有所帮助!

     

    2009年2月27日 6:10
    版主

全部回复

  • http://space.itpub.net/12639172/viewspace-343327

     

    可以看看


    孟宪会
    2009年2月27日 3:41
    版主
  • HTML代码
    <asp:TextBox ID="txtName" AutoPostBack="true" runat="server" OnTextChanged="txtName_TextChanged"></asp:TextBox>
    <asp:Label ID="lblMessage" runat="server" Width="300px" ForeColor="red"></asp:Label>

    WEB层代码
    protected void txtName_TextChanged(object sender, EventArgs e)
        {
            bool result = UserMessage.CheckUser(txtName.Text);
            if (result)
            {
                lblMessage.Text = "";
            }
            else
            {
                lblMessage.Text="该用户已存在,请更换用户名!";
            }
        }

    业务处理层 UserMessage.cs中的CheckUser()方法

    public static bool CheckName(string txtName)
    {
        return UserService.CheckName(txtName);
    }

    数据访问层

     public static bool CheckName(string txtName)
        {
            string sql = "select count(*) from users where name='" + txtName + "'";
            try
            {
                int count = DBHelper.GetScalar(sql);

                if (count > 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return false;
            }
        }


    数十年的努力拼搏...只是为了迎接死亡前一瞬间的感悟..
    2009年2月27日 5:09
  • 其实不用那么复杂的

    例子

    <%@ Page Language="C#" %> 
     
    <%@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
      Namespace="System.Web.UI" TagPrefix="asp" %> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
     
    <script runat="server"
     
      protected void Button1_Click(object sender, EventArgs e) 
      { 
        //这里可以从数据库读取 
        if (TextBox1.Text.Equals("mxh") && TextBox2.Text.Equals("孟宪会")) 
        { 
          Label1.Text = "ok"
        } 
        else 
        { 
          Label1.Text = "用户名和密码错误。"
        } 
      } 
    </script> 
     
    <html xmlns="http://www.w3.org/1999/xhtml"
    <head runat="server"
      <title></title
    </head> 
    <body> 
      <form id="form1" runat="server"
      <asp:ScriptManager ID="ScriptManager1" runat="server"
      </asp:ScriptManager> 
      <asp:UpdatePanel ID="UpdatePanel1" runat="server"
        <ContentTemplate> 
          <asp:TextBox ID="TextBox1" runat="server" Text="mxh"></asp:TextBox> 
          <asp:TextBox ID="TextBox2" runat="server" Text="孟宪会"></asp:TextBox> 
          <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> 
          <asp:Label ID="Label1" runat="server" Text=""></asp:Label> 
        </ContentTemplate> 
      </asp:UpdatePanel> 
      <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1"
        <ProgressTemplate> 
          正在提交……</ProgressTemplate> 
      </asp:UpdateProgress> 
      </form> 
    </body> 
    </html> 
     

    孟宪会
    2009年2月27日 5:40
    版主
  • 试了,但出现了Sys未定义错误,该怎么解决啊。

        点击按钮还是传统的postback,没有执行异步回送。

    2009年2月27日 6:03
  • 还有,孟老师,我是想在数据库中查找进行检验啊!
    2009年2月27日 6:06
  •  楼主你好! 你只要做下面这个sql 查询, 如果结果大于0 ,就说明 用户存在了。

     select count(usersId) from users where name=@name   

     // 假如 users 的主键是 userId  

    //  name 是 string  类型  ,最好用 SqlParameter , 或者 储存过程 会比较安全一些.

    // 希望对你有所帮助!

     

    2009年2月27日 6:10
    版主
  • 存储过程我知道怎么写,数据访问我也知道怎么做,我的意思是说

      我不知道怎么把客户端得到的值通过异步的方式传到服务器。

    前面那个问题解决了。  Sys为定义错误。

     

    2009年2月27日 6:26
  • 这是我的代码:

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        Namespace="System.Web.UI" TagPrefix="asp" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
        <script type="text/javascript">
          var xmlHttp;
            
          function createXmlHttp()
          {
              if(window.ActiveXObject)
            {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            else if(window.XMLHttpRequest)
            {
                xmlHttp = new XMLHttpRequest();
            }

          }
          
          //处理方法
          function check()
          {
           createXmlHttp();
           var name=document.getElementById("TextBox1").value;
           
           var url="LoginValidate.ashx?username="+name;
           xmlHttp.open("GET",url,true);
           xmlHttp.onreadystatechange=ShowResult;
            xmlHttp.send(null);

          }
          //回调方法
          function ShowResult()
          {
              if(xmlHttp.readyState==4)
            {
                if(xmlHttp.status==200)
                {
                    document.getElementById("check").innerHTML=xmlHttp.responseText;
                }
            }

          }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
         <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
        <div>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
              <ContentTemplate>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="check()" />
             </ContentTemplate>
            </asp:UpdatePanel>
            </div>
            <div id="check">
            </div>
          
        </form>
    </body>
    </html>

     LoginValidate.ashx:

     <%@ WebHandler Language="C#" Class="LoginValidate" %>

    using System;
    using System.Web;
    using System.Data;
    using System.Data.SqlClient;

    public class LoginValidate : IHttpHandler {
        
        public void ProcessRequest (HttpContext context)
        {


            context.Response.ContentType = "text/plain";
            string username = context.Request.QueryString["username"].ToString();
            string strSQL = "select username from [Tb_Admin] where admin='" + username + "'";
            if (ReDataSet(strSQL).Tables[0].Rows.Count > 0)
            {
                context.Response.Write("该用户已经有人使用!");
            }
            else
            {
                context.Response.Write("恭喜你!" + username + "可以使用!");
            }
            System.Threading.Thread.Sleep(3000);

        }
        //数据库连接字符串
        public static string strCon ="";

        /// <summary>
        /// 执行SQL语句,返回DataSet
        /// </summary>
        /// <param name="strSQL"></param>
        /// <returns></returns>
        public DataSet ReDataSet(string strSQL)
        {
            SqlConnection con = new SqlConnection(strCon);
            try
            {
                con.Open();
                SqlDataAdapter da = new SqlDataAdapter(strSQL, con);
                DataSet ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                con.Close();
            }
        }
       
        public bool IsReusable {
            get {
                return false;
            }
        }

    }

     

     

     

     



    2009年2月27日 6:30
  • 问题解决了:<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        Namespace="System.Web.UI" TagPrefix="asp" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
         <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
        <div>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true">
              <ContentTemplate>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
             <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
             </ContentTemplate>
              <Triggers>
               <asp:AsyncPostBackTrigger ControlID="Button1" />
             </Triggers>
            </asp:UpdatePanel>
            </div>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click"  />
            <div id="check">
             </div>
         
        </form>
    </body>
    </html>

     

     using System;
    using System.Data;
    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.IO;
    using System.Data.SqlClient;

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

        }
       
     
        protected void Button1_Click(object sender, EventArgs e)
        {
            string strCon = ConfigurationManager.AppSettings["conStr"].ToString();
            SqlConnection con = new SqlConnection(strCon);
            con.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "ReturnAdmin";
            cmd.Parameters.Add("@admin", SqlDbType.VarChar, 30).Value=this.TextBox1.Text.Trim();
           
           
            if (this.TextBox1.Text.Trim() == "")
            {
                this.Label1.Text = "bu wei kong ";

            }
            else
            
            {
                int a = Convert.ToInt32(cmd.ExecuteScalar());
               
                if (a > 0)
                {
                    this.Label1.Text = "cun zai ";

                }
                else
                {
                    this.Label1.Text = "ky  shi  yong ";
                }
            }
            con.Close();

        }
    }

     



    2009年2月27日 7:03