检查用户数据是否已经在数据库中

本文关键字:数据库 是否 用户 用户数 数据 检查 | 更新日期: 2023-09-27 18:14:51

我想在当前代码中包含功能,以防止重复添加到数据库中。这样,如果有人已经注册了自己的姓名和电子邮件,就会弹出一条消息,告诉他们已经将信息添加到数据库中。我的表单使用asp.net,数据使用c#填充。我能包括这样的东西:cmd.CommandText = "select * from Table1 where pName='"+t1.Text+"' and pEmail='"+t2.Text+"'";来实现这一点吗?

c#代码:

using System.Data.OleDb;
using System.Configuration;
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        OleDbConnection con = new OleDbConnection();
        con.ConnectionString = ConfigurationManager.ConnectionStrings["NorthwindConnectionString2"].ToString();
        con.Open();
        OleDbCommand cmd = new OleDbCommand();
        cmd.CommandText = "insert into[Table1](pName)values(@nm)";
        cmd.Parameters.AddWithValue("@nm", TextBox1.Text);
        cmd.CommandText = "insert into[Table1](pEmail)values(@nm)";
        cmd.Parameters.AddWithValue("@nm", TextBox2.Text);
        cmd.Connection = con;
        int a = cmd.ExecuteNonQuery();
        if (a>0)
        {
            Label1.Text = "Inserted Sucessfully!";
        }
    }
}

检查用户数据是否已经在数据库中

你可以使用这个,但我使用SQL server 2014 ..试试这个…模式

CREATE TABLE [dbo].[Dummy](
    [id] [bigint] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](50) NULL,
)
查询

  if not exists(select 1 from Dummy where Name='akash')
  insert into Dummy(Name) values('aka')

这是一个查询,没有返回int a = cmd.ExecuteNonQuery();

中的行

方法2:创建一个唯一约束,并使用try catch发现没有插入重复行。

ALTER TABLE [dbo].[Dummy] ADD  CONSTRAINT [uc_Name] UNIQUE 
NONCLUSTERED 
(
    Name ASC
)

我建议在INSERT语句之前先执行SELECT查询。此外,您可以只使用电子邮件作为SELECT语句的参数,而不包括姓名,因为有可能人员具有相同的姓名。

string query = "SELECT COUNT(ID) FROM tblUsers WHERE email = @email
int count = db.ExecuteReader(query);    

if (count > 0){
   return "email is already in use";
} else {
   //Call the insert statement here with try catch inside. In this way you can handle if error occur on the execution itself.
}