我有一个示例网站,您可以在其中输入您的电子邮件地址,并将其插入到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;
}
}
}
答案 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注入。 :)