我们如何在同一个单击事件中使用两个查询?
本文关键字:两个 查询 同一个 单击 事件 我们 | 更新日期: 2023-09-27 18:09:06
我使用的代码是:
protected void Button1_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection("server=kiran-b946c0f6d;
uid=sa;
pwd=123;
database=employe");
SqlCommand com=new SqlCommand("INSERT INTO Emplo VALUES('"+TextBox2.Text+"'",con);
com.Parameters.Add("Email_ID", SqlDbType.VarChar);
com.Parameters["Email_ID"].Value = TextBox2.Text;
con.Open();
Label3.Text = "successfully added";
SqlDataReader reader = null;
com = new SqlCommand("SELECT Email_ID FROM Emplo WHERE Email_ID='"
+ TextBox2.Text + "'",
con);
reader = com.ExecuteReader();
if (reader != null && reader.HasRows)
{
Label3.Text = "Emailid alraedy exist";
}
reader.Dispose();
SqlDataAdapter da = new SqlDataAdapter(com);
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
con.Close();
}
我打算在数据库中使用Insert值,如果有任何重复,它将显示错误。这种口是心非的做法很有效。但是插入不能正常工作。它将显示插入成功。但是这些值并没有插入
在覆盖com
变量之前,您实际上没有调用com.ExecuteNonQuery()
您根本没有运行插入操作—您设置了命令,然后用新的选择命令覆盖它。
即使你在那一点上运行插入,你的选择之后总是会返回true,因为你刚刚插入了它。此外,根据数据库结构,如果该数据库字段被设置为唯一(这似乎是你试图在代码中强制执行),那么我希望在你试图插入已经存在的东西时抛出sql异常。
你要做的是首先运行select来检查它是否已经存在。如果它存在,你就可以停止。如果不存在,则可以执行插入操作。
或者最好还是写一个SQL语句(最好是一个过程),在插入的同时做检查,以防止任何可能的问题,两个线程做检查,发现它不存在,然后两个线程做插入,导致其中一个很可能失败。