我们如何在同一个单击事件中使用两个查询?

本文关键字:两个 查询 同一个 单击 事件 我们 | 更新日期: 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语句(最好是一个过程),在插入的同时做检查,以防止任何可能的问题,两个线程做检查,发现它不存在,然后两个线程做插入,导致其中一个很可能失败。