确定数据库中是否已存在用户登录名
本文关键字:存在 用户 登录 是否 数据库 | 更新日期: 2023-09-27 18:31:03
我正在使用 C# 在 asp.net 中构建一个 Web 应用程序。我有用户应该注册然后可以登录的表格。我在使 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
}
}
使Player_Name在数据库中是唯一的,那么当您尝试插入时,它会给您异常。您必须使用唯一约束。您还必须提供命令类型,并检查是否将两个查询分配给了同一个cmd对象
在
代码中插入数据,然后检查名称是否相同。首先,您应该在数据库中搜索名称,然后如果没有任何具有该名称的记录,则应添加记录。
我通常以以下两种方式之一执行此操作:
- 创建存储过程,该过程将检查名称的唯一性,并在一切正常时插入新记录。它应以您将检查的数字代码形式返回状态。 在保存名称之前,
- 请检查名称的唯一性,将其作为验证过程的一部分。
使用 merge 语句可能会有所帮助。 合并根据与源表的连接结果对目标表执行插入、更新或删除操作。
基本上,它会在需要时插入,并在需要时更新。 通常被称为更新器。 但它可以完成工作。
这是一个解释如何使用合并的网站的链接。 看起来像一篇好文章。http://www.kodyaz.com/articles/sql-server-2008-t-sql-merge-statement-example.aspx
如果你想写一个模型函数来做到这一点,那么
- 把它留给ajax检查,它与第二个非常相似方法
- 发出"从数据库表中选择用户名"以检索用户名,然后在之前检查用户名输入显示视图以报告问题(如果有)或显示消息例如,告诉用户"此名称有效"。