我建立一个Web应用程序(asp.net & C#), 我想将它与分贝(我要建)连接,我找教程\本书与DB连接并安全地做这件事(避免sql注入)。 我的查询很简单,并不复杂。如何从ASP.NET应用程序访问数据库?
我读了一点关于存储过程,准备好的语句,LiNQ 这一切都让我很困惑。
有人可以指点我在哪里阅读如何做到这一点?
我建立一个Web应用程序(asp.net & C#), 我想将它与分贝(我要建)连接,我找教程\本书与DB连接并安全地做这件事(避免sql注入)。 我的查询很简单,并不复杂。如何从ASP.NET应用程序访问数据库?
我读了一点关于存储过程,准备好的语句,LiNQ 这一切都让我很困惑。
有人可以指点我在哪里阅读如何做到这一点?
在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注入。因此,基本上每次在构建查询字符串时使用+
运算符时,都会出错。
而且一旦你厌倦了写你可以考虑使用ORM的SQL查询。 .NET附带的一个称为ADO.NET Entity Framework。
这是一个相当广泛的问题。我建议你花一些时间使用Google来更好地理解ADO.NET作为一个起点。