我正在使用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
}
}
答案 0 :(得分:2)
在数据库中使Player_Name唯一,然后当您尝试插入时它会给您异常。您必须使用唯一约束。 您还必须提供命令类型并检查是否已将两个查询分配给同一cmd对象
答案 1 :(得分:1)
在您的代码中,您正在数据库中插入数据,然后您正在检查名称是否相同。 首先,您应该在数据库中搜索名称,然后如果没有任何具有该名称的记录,您应该添加您的记录。
答案 2 :(得分:0)
如果你想写一个模型函数来做那个
答案 3 :(得分:0)
我通常采用以下两种方式之一:
答案 4 :(得分:0)
使用merge语句可能对此有所帮助。 Merge根据与源表的连接结果对目标表执行插入,更新或删除操作。
基本上它会在需要时插入,并在需要时进行更新。通常被称为upsert。但它完成了工作。
以下是指向如何使用合并的网站链接。看起来像一篇好文章。 http://www.kodyaz.com/articles/sql-server-2008-t-sql-merge-statement-example.aspx