Доступ к базе данных в ASP.NET ничем не отличается от доступа к базе данных в любом приложении .NET просто потому, что ASP.NET является приложением .NET.А для доступа к реляционной базе данных в .NET можно использовать ADO.NET .
Пока вы используете параметризованные запросы, вы защищены от внедрения SQL.Давайте рассмотрим пример с SQL Server:
string firstname = "John";
using (var conn = new SqlConnection("Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;"))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT lastname FROM mytable WHERE firstname = @firstname;";
cmd.Parameters.AddWithValue("@firstname", firstname);
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
string lastName = reader.GetString(0);
// do something with the value
}
}
}
Теперь сравните со следующим ( неверный код ):
string firstname = "John";
using (var conn = new SqlConnection("Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;"))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT lastname FROM mytable WHERE firstname = '" + firstname + "';";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
string lastName = reader.GetString(0);
// do something with the value
}
}
}
Этот второй пример плох и уязвим дляSQL-инъекция.Таким образом, практически каждый раз, когда вы используете оператор +
при построении строки запроса, вы делаете это неправильно.
И когда вы устали писать все эти запросы SQL, вы можете рассмотреть возможность использования ORM ,Тот, который поставляется с .NET, называется ADO.NET Entity Framework .