2016-11-19 2 views
1

ceci est mon image: How to read the SqlDataAdapter command text in cleanComment lire le texte de commande SqlDataAdapter dans un endroit propre

Puis-je savoir comment lire le texte de commande SqlDataAdapter dans le texte propre. Exemple:

SELECT * FROM tbl_Video WHERE [email protected] 

Je voudrais connaître la valeur du paramètre que je viens de passer en clair, parce que je veux stocké l'ensemble stament SQL avec une valeur de paramètre dans la table de fichier journal. Le but que j'utilise le paramètre est parce que je voudrais éviter l'injection de SQL.

Répondre

0

Voici ma méthode que j'utilise pour obtenir des données à partir d'une base de données MySQL. ex) string q = "CHOISIR ID FROM Utilisateurs WHERE Nom d'utilisateur = chris"; chaîne id = dbGetData (q); // utilisateurs id

public static String dbGetData(String q) 
    { 
     openConnection(); //opens connection if closed 
     try 
     { 
      SqlCommand cmd = new SqlCommand(q, connection); 
      return cmd.ExecuteScalar().ToString(); 
     } 
     catch (Exception) 
     { 
     } 
     return null; 
    } 
+0

Salut, Chris, je vous remercie de votre réponse. Cette instruction SQL n'est-elle pas vulnérable aux attaques par injection SQL? –

+0

@TiongGor oh je ne suis pas sûr. Ce serait bien si quelqu'un peut me faire savoir si c'est vrai – chris

0

Je ne suis pas au courant d'une méthode intégrée pour cela, mais la fonction d'assistance suivante servira dans le but:

private static string GetSqlCommandTextForLogs(SqlCommand cmd) 
{ 
    string text = cmd.CommandText; 
    foreach (SqlParameter parameter in cmd.Parameters) 
    { 
     text = text.Replace("@"+parameter.ParameterName, parameter.Value.ToString()); 
    } 
    return text; 
} 

La propriété SelectCommand sur SqlDataAdapter est de type SqlCommand et peut être passé dans une telle aide pour obtenir le texte approprié au journal que vous recherchez.

0

Vous pouvez le faire avec le SqlCommandBuilder et obtenir le CommandText des commandes.

Exemple:

using(SqlConnection connection = new SqlConnection("YOUR CONNECTION")) 
    { 
     connection.Open(); 
     SqlDataAdapter thisAdapter = new SqlDataAdapter("SELECT ID from SOMETABLE", connection); 

     SqlCommandBuilder thisBuilder = new SqlCommandBuilder(thisAdapter); 

     Console.WriteLine("SQL SELECT Command is:\n{0}\n", thisAdapter.SelectCommand.CommandText); 

     SqlCommand updateCommand = thisBuilder.GetUpdateCommand(); 
     Console.WriteLine("SQL UPDATE Command is:\n{0}\n", updateCommand.CommandText); 

     SqlCommand insertCommand = thisBuilder.GetInsertCommand(); 
     Console.WriteLine("SQL INSERT Command is:\n{0}\n", insertCommand.CommandText); 

     SqlCommand deleteCommand = thisBuilder.GetDeleteCommand(); 
     Console.WriteLine("SQL DELETE Command is:\n{0}", deleteCommand.CommandText); 
    }