C# et MySQL .NET Connecteur - de Toute façon de prévenir les attaques par Injection SQL dans une classe générique?

Mon idée est de créer des classes génériques pour Insérer/mettre à Jour/choisir via un C# (3.5) Winforms app de parler avec une base de données MySQL via MySQL .NET Connecteur 6.2.2.

Par exemple:

public void Insert(string strSQL)
{
   if (this.OpenConnection() == true)
   {
       MySqlCommand cmd = new MySqlCommand(strSQL, connection);
       cmd.ExecuteNonQuery();
       this.CloseConnection();
   }
}

Puis, à partir de n'importe où dans le programme, je peux exécuter une requête avec/sans intervention de l'utilisateur simplement en passant une chaîne de requête SQL.

De lecture autour de SORTE commençait à me donner l'indication que cela peut conduire à des attaques par injection SQL (pour tout utilisateur des valeurs d'entrée). Est-il de toute façon de frotter la saisie strSQL ou dois-je aller et de créer des requêtes paramétrées dans chaque méthode qui a besoin de faire une fonction base de données?

UPDATE1:

Ma solution Finale ressemble à quelque chose comme ceci:

public void Insert(string strSQL,string[,] parameterValue)
{
   if (this.OpenConnection() == true)
   {
       MySqlCommand cmd = new MySqlCommand(strSQL, connection);

       for(int i =0;i< (parameterValue.Length / 2);i++)
       {                        
       cmd.Parameters.AddWithValue(parameterValue[i,0],parameterValue[i,1]);          
       }

       cmd.ExecuteNonQuery();
       this.CloseConnection();
   }}
Ce cris horrible idée. Vous devez utiliser un ORM ou écrire stockées procs.

OriginalL'auteur John M | 2010-05-05