我建立一個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作爲一個起點。