确定数据库中是否已存在用户登录?

时间:2012-04-14 18:24:38

标签: c# asp.net sql-server

我正在使用C#在asp.net中构建一个Web应用程序。我有用户应该注册的表单,然后可以登录。我在让网络应用程序知道用户选择的名称是“已经存在”时遇到了问题。如果它已经存在,则不应插入相同的名称并显示消息“用户名已存在”。我试过SqlDataReader但没有运气。

protected void Register_Button_Click(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BJ_Player_String"].ToString());
        SqlCommand cmd = new SqlCommand();
        SqlCommand cmd2 = new SqlCommand();
        SqlDataReader data_reader;
        String name = TextBox2.Text;
        String date = TextBox3.Text;


        try
        {
            conn.Open();
            cmd = new SqlCommand("Insert into BJ_Player (Player_Name, D_O_B) Values (@Player_name, @D_O_B)", conn);
            cmd = new SqlCommand("Select Player_Name from BJ_Player WHERE Player_Name = @Player_name", conn);
            cmd.Parameters.Add("@Player_name", SqlDbType.NVarChar).Value = name;
            cmd.Parameters.Add("@D_O_B", SqlDbType.Date).Value = date;
            cmd.Connection = conn;
            data_reader = cmd.ExecuteReader();
            cmd.ExecuteNonQuery();

            if (data_reader.HasRows)
            {
                lblPlayerNameExists.Visible = true;
            }
            else
            {
                // do nothing
            }    
        }

5 个答案:

答案 0 :(得分:2)

在数据库中使Player_Name唯一,然后当您尝试插入时它会给您异常。您必须使用唯一约束。 您还必须提供命令类型并检查是否已将两个查询分配给同一cmd对象

答案 1 :(得分:1)

在您的代码中,您正在数据库中插入数据,然后您正在检查名称是否相同。 首先,您应该在数据库中搜索名称,然后如果没有任何具有该名称的记录,您应该添加您的记录。

答案 2 :(得分:0)

如果你想写一个模型函数来做那个

  1. 将其留给ajax检查,这与第二次非常相似 方法
  2. 问题“从DB-table中选择用户名”进行检索 用户名然后检查用户输入的用户名 显示视图以报告问题(如果有)或显示消息 例如,告诉用户“此名称有效”。

答案 3 :(得分:0)

我通常采用以下两种方式之一:

  1. 创建将检查名称唯一性的存储过程,如果一切正常,则插入新记录。它应该返回状态作为您要检查的数字代码。
  2. 在保存之前检查名称唯一性,作为验证过程的一部分。

答案 4 :(得分:0)

使用merge语句可能对此有所帮助。 Merge根据与源表的连接结果对目标表执行插入,更新或删除操作。

基本上它会在需要时插入,并在需要时进行更新。通常被称为upsert。但它完成了工作。

以下是指向如何使用合并的网站链接。看起来像一篇好文章。 http://www.kodyaz.com/articles/sql-server-2008-t-sql-merge-statement-example.aspx