从数据库中删除之前的验证

时间:2013-01-14 20:24:02

标签: c# asp.net .net sql-server tsql

我有一个示例网站,您可以在其中输入您的电子邮件地址,并将其插入到MS SQL数据库中。在下一页上,GridView显示数据库中的列表。现在我需要添加一个删除地址的函数,但它必须验证该地址当前是否

public partial class Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = GetLastWriteTime(Request.PhysicalPath).ToString();
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        string data = DateTime.Now.ToLongDateString() + "," + DateTime.Now.ToLongTimeString() + ": ";

        SqlDataSource1.InsertCommand = "INSERT INTO ListaAdresow (Email) Values('" + TextBox1.Text + "')";

        try
        {
            SqlDataSource1.Insert();
            Label2.Text += data + "added into database: " + TextBox1.Text + "<br/>";
            TextBox1.Text = "";
        }
        catch (Exception ex)
        {
            Label2.Text += data + ex.Message;
        }
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        string data = DateTime.Now.ToLongDateString() + "," + DateTime.Now.ToLongTimeString() + ": ";
        SqlDataSource1.DeleteCommand = "DELETE FROM ListaAdresow WHERE Email='" + TextBox1.Text + "'";

        SqlDataSource1.SelectCommand = "SELECT  FROM [ListaAdresow] WHERE Email=" + TextBox1.Text;

        try
        {
                SqlDataSource1.Delete();

                Label2.Text += data + "removed from database: " + TextBox1.Text + "<br/>";
                TextBox1.Text = "";

        }
        catch (Exception ex)
        {
            Label2.Text += data + ex.Message;
        }
    }
}

5 个答案:

答案 0 :(得分:1)

我强烈建议您为所有查询创建存储过程,但为了示例,您可以从gridview中获得如下内容:

if (myGrid.SelectedRows.Count > 0)
{
     int selectedIndex = myGrid.SelectedRows[0].Index;

     // gets the RowID from the first column in the grid
     int rowID = int.Parse(BooksGrid[0, selectedIndex].Value.ToString());

     string sql = "IF EXISTS(SELECT COLUMN FROM Table1 WHERE ID = @rowID)
                    BEGIN 
                      DELETE FROM TABLE1 WHERE ID = @rowID"
                    END;

     }

答案 1 :(得分:0)

如果可以在执行删除后验证,则删除数据源的方法将返回受影响的数据库的总行数。 See documentation

答案 2 :(得分:0)

要回答您的问题,您可以使用类似的内容(未经测试):

SqlDataAdapter da = new SqlDataAdapter();
    DataTable dt = new DataTable();

    // Create the SelectCommand using paramaterized queries
        SqlCommand command = new SqlCommand("SELECT * 
                                            FROM ListaAdresow 
                                            WHERE Email = @Email", connection);
    command.Parameters.Add("@Email", SqlDbType.VarChar, 40, TextBox1.Text);

    da.SelectCommand = command;
    da.Fill(dt);

    if (dt.Rows.Count > 0)
    {
        //Row Exists
    }
    else
    {
        //Row Does Not Exist
    }

但是,我重申其他人所说的话,DeleteCommand可以自行运行,它将返回受影响记录的数量。

答案 3 :(得分:0)

只需将值放入会话中,然后在删除之前使用delete one检查会话值

答案 4 :(得分:0)

尝试使用存储过程并使用参数传递值。您可以轻松检查数据库中是否存在数据。它也可以帮助你防止有点sql注入。 :)