Qu'est-ce que le passage de paramètres à SQL et pourquoi en ai-je besoin?

Débutant ici:

Dans ce réponse à ma question de comment faire pour insérer des données dans SQL Server, il a mentionné en passant des paramètres au lieu de concaténation de chaîne que j'ai actuellement.

Est-ce vraiment nécessaire pour la sécurité? Si oui, quelle est exactement passage de paramètres? Quand je recherche sur google, je reçois beaucoup sur les procédures stockées. C'est ce que je veux, je ne sais pas à propos de procédures stockées....encore.

Si vous pouvez me diriger dans la bonne direction, j'apprécierais que.

Grâce.

EDIT:

Ok, voici ce que j'ai. Il semble pour mettre à jour la base de données correctement et finalement je vais changer le codage en dur ints pour les entrées à partir d'un label. S'il vous plaît confirmer si la façon dont je l'ai fait ce n'est pas vulnérable à n'importe quel sql injection ou de hacks.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;

using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;



public partial class Stats : System.Web.UI.Page
{

    public SqlDataReader DataReader;
    public SqlCommand Command;
    string queryString = ("INSERT INTO UserData (UserProfileID, ConfidenceLevel, LoveLevel, HappinessLevel) VALUES (@UID, @CL, @LL, @HL);");
    //string queryString = ("INSERT INTO UserData (UserProfileID, ConfidenceLevel, LoveLevel, HappinessLevel) VALUES ('a051fc1b-4f51-485b-a07d-0f378528974e', 2, 2, 2);"); 

    protected void Page_Load(object sender, EventArgs e)
    {
       LabelUserID.Text = Membership.GetUser().ProviderUserKey.ToString();

    }

    protected void Button1_Click(object sender, EventArgs e)
    {

        //connect to database
        MySqlConnection database = new MySqlConnection();
        database.CreateConn(); 

        //create command object
        Command = new SqlCommand(queryString, database.Connection);

        //add parameters. used to prevent sql injection
        Command.Parameters.Add("@UID", SqlDbType.UniqueIdentifier);
        Command.Parameters["@UID"].Value = Membership.GetUser().ProviderUserKey;

        Command.Parameters.Add("@CL", SqlDbType.Int);
        Command.Parameters["@CL"].Value = 9;

        Command.Parameters.Add("@LL", SqlDbType.Int);
        Command.Parameters["@LL"].Value = 9;

        Command.Parameters.Add("@HL", SqlDbType.Int);
        Command.Parameters["@HL"].Value = 9;

        Command.ExecuteNonQuery(); 


    }

}
Mon plus beau moment: stackoverflow.com/questions/332365/...
J'aime les petits Bobby Tables. Se classe juste là-haut avec leur bande d'environ Gotos.
Nice....
En plus de l'apprentissage de l'écriture des requêtes paramétrées, je vous recommande aussi la lecture d'un livre par Justin Clarke appelé "les Attaques par Injection SQL et de la Défense", où il décrit en détail comment l'Injection SQL qui se passe, comment s'en protéger dans différentes langues, notamment .NET, comment faire pour tester et ainsi de suite. Une assez bonne lecture.
Sonne bien. Je vais devoir prendre le temps en quelque sorte....Je suis un one man show sur ce projet de mine!

OriginalL'auteur Greg McNulty | 2010-07-09