Как получить доступ к базе данных из приложения ASP.NET? - PullRequest
0 голосов
/ 23 декабря 2010

я создаю веб-приложение (asp.net & c #), Я хочу соединить его с БД (который я строю), и я ищу учебник \ книгу о том, как соединиться с БД и делать это безопасно (избегая инъекций SQL). мои запросы очень простые и не сложные.

Я прочитал немного о хранимых процедурах, подготовленных утверждениях, LiNQ. это все действительно смущает меня.

Может кто-нибудь указать мне, где читать, как это сделать?

Ответы [ 2 ]

3 голосов
/ 23 декабря 2010

Доступ к базе данных в 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 .

0 голосов
/ 23 декабря 2010

Это довольно широкий вопрос.Я бы порекомендовал вам потратить некоторое время на использование Google, чтобы лучше понять ADO.NET в качестве отправной точки.

Подключение к базам данных в ASP.NET

Учебники ASP.NET по доступу к данным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...