전자 메일 주소를 입력하는 샘플 웹 사이트가 있으며 MS SQL 데이터베이스에 삽입됩니다. 다음 페이지에서 GridView는 데이터베이스의 목록을 표시합니다. 이제 데이터베이스에 affecteds 나는 주소를 삭제하는 기능을 추가 할 필요가 있지만, 후 확인 실행, 삭제 방법은 행의 데이터 소스 반환 전체의 삭제를 할 수있는 경우는 주소가 현재데이터베이스에서 삭제하기 전에 확인
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;
}
}
}
1 단계. [SQL Injection] (http://en.wikipedia.org/wiki/SQL_injection)을 읽으십시오. –
데이터베이스를 확인하지 않고 삭제하면 ok입니다. 그것은 존재하지 않는 경우 오류를 던지지 않을 것이며, 존재한다면 삭제 될 것입니다. 플레임 (flem)이 연구 EF를 제안하고 이것을 사용하는 SQL SERVER에 연결하기 때문에 데이터 조작을 위해 이와 같은 문자열을 사용하면 위험 할 수 있습니다. – sprocket12
2 단계. 이유를 이해했으면 쿼리를 저장 프로 시저 또는 EF로 변경합니다. –