我希望在当前代码中包含功能,以防止将重复添加添加到数据库中。这样,如果有人已经注册了他们的姓名和电子邮件,则会弹出一条消息,说他们已经将他们的信息添加到数据库中。我的表单是使用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!";
}
}
}
答案 0 :(得分:0)
我建议您在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.
}
答案 1 :(得分:0)
您可以使用此但我使用的是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: 创建一个唯一的CONSTRAINT并使用try catch发现没有插入重复的行..
ALTER TABLE [dbo].[Dummy] ADD CONSTRAINT [uc_Name] UNIQUE
NONCLUSTERED
(
Name ASC
)