如何从ASP.NET应用程序访问数据库?

时间:2010-12-23 17:08:20

标签: c# database

我正在构建一个Web应用程序(asp.net& c#), 我想将它连接到db(我正在构建),并且我正在寻找有关连接db并安全地执行它的教程\书(避免sql注入)。 我的查询非常简单而且不复杂。

我读了一些关于存储过程,预处理语句,LiNQ的内容 这一切都让我很困惑。

有人能指出我在哪里阅读该怎么做?

2 个答案:

答案 0 :(得分:3)

在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

答案 1 :(得分:0)

这是一个非常广泛的问题。我建议您花一些时间使用Google来更好地理解ADO.NET作为起点。

Connecting to Databases in ASP.NET

ASP.NET Data Access Tutorials