检查用户数据是否已经在数据库中
本文关键字:数据库 是否 用户 用户数 数据 检查 | 更新日期: 2023-09-27 18:14:51
我想在当前代码中包含功能,以防止重复添加到数据库中。这样,如果有人已经注册了自己的姓名和电子邮件,就会弹出一条消息,告诉他们已经将信息添加到数据库中。我的表单使用asp.net,数据使用c#填充。我能包括这样的东西:cmd.CommandText = "select * from Table1 where pName='"+t1.Text+"' and pEmail='"+t2.Text+"'";
来实现这一点吗?
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.
}