J'ai une zone de texte HTML qui contient du code SQL dont j'ai besoin d'être exécuté. Je suis capable de récupérer le code réel de la zone de texte, mais je ne suis pas sûr de savoir comment exécuter le code. Des manières simples et élégantes utilisant C# 3.5?Comment exécuter du code SQL à l'aide de C# 3.5?
Répondre
NE PAS CODE D'UN EXECUTE TEXTBOX
à moins que vous faites confiance vraiment ce qui est entré.
Si vous le faites, utilisez ceci:
SqlConnection con = new SqlConnection("Your connection string");
con.Open();
SqlCommand cmd = new SqlCommand(TexdtBox1.Text, con);
cmd.ExecuteNonQuery();
con.Close()
Notez que cela ne retournera rien, jsut exécuter la requête. Si vous voulez retourner des données, vous avez besoin d'un SqlDataAdaptor ou d'un SqlDataReader.
+1 pour la première déclaration – tvanfosson
sur 'trusing' l'entrée: ce n'est pas seulement la sécurité. c'est la performance. Il est très facile, même pour un utilisateur bien intentionné, de créer accidentellement ce qui équivaut à une attaque de déni de service sur votre base de données avec ad hoc sql. –
c'est quelque chose que je connais très bien .... :) – cjk
Cela dépend du type de base de données que vous souhaitez exécuter. Si je peux supposer que vous voulez parler à une base de données SQL Server, regardez les classes suivantes:
- SqlConnection classe
- SqlCommand classe
SqlClient est un espace de noms autant que je me souviens .... – cjk
Oui, j'ai posté la réponse et l'a édité, à la fois pour réparer cela et ajouter les liens. –
Créer une SqlCommand avec le CommandText de votre zone de texte.
obligatoire, bien sûr –
+1 seulement une question de temps ... Je me souviens quand il est sorti, a ri assez fort :-) – WestDiscGolf
est ici un peu (non testé non testé car tapé à droite dans la zone de texte SO) exemple de code:
using System.Data;
namespace MyGreatNamespace
{
class MyGreatClass
{
static public DataTable executeTable(string query)
{
return executeTable(query, null, null);
}
static public DataTable executeTable(string query, string[] params, object[] values)
{
DataTable myTable = new DataTable();
using (SqlConnection connection = new SqlConnection(myConnectionString))
using(SqlCommand command = new SqlCommand(connection))
{
command.CommandType = CommandType.Text;
command.CommandText = myQuery;
if (parameters.Count == values.Count && parameters.Count > 0)
{
for(int i = 0; i < parameters.Count; i ++)
{
command.addParameterWithValue(parameters[i], values[i]);
}
}
using(SqlDataAdapter adapter = new SqlDataAdapter(command))
{
adapter.Fill(out myTable);
}
}
return myTable;
}
}
}
Je ne le recommanderais pas, mais si vous le faites, au moins confirmer que la SQL saisi commence par SELECT et ne contient aucun point-virgule (;) ou aucun caractère de commentaire (- et/*).
- 1. Pouvez-vous exécuter le code C# à partir de C++?
- 2. Comment exécuter du code PL/SQL dans SQLPlus?
- 3. comment exécuter du code en mémoire?
- 4. Comment exécuter T-SQL à partir de C#?
- 5. Comment exécuter du code JavaScript en séquence?
- 6. Mise à niveau du code de .Net 1.1 à 2.0/3.5 (C#)
- 7. Firefox 3.5 code de duplication
- 8. C# - Code de bloc à exécuter dans le concepteur
- 9. Exécuter une requête sql à partir du fichier sql
- 10. Comment exécuter un script bash à partir du programme C++
- 11. Comment générer du code C# à partir de fichiers WADL?
- 12. structure de données laide à la recherche java
- 13. Comment exécuter du code pendant le "firstrun" d'une application Xulrunner
- 14. Comment exécuter du code APRÈS qu'un formulaire a été chargé?
- 15. Rechercher du code dépendant de .NET 3.5 SP1
- 16. Comment exécuter les commandes de ligne de commande à partir du code
- 17. Comment puis-je exécuter un fichier de script SQL à partir du programme d'installation de msi (C#)?
- 18. Appel du code C++ visuel de C#
- 19. ASP.NET 3.5 et SQL Server 2008
- 20. Assemblages consommant du code C# 2.0 compilés avec C# 3.0
- 21. Sql Server 3.5 Ce insert d'identité
- 22. Comment exécuter du code Ruby non sécurisé dans un bac à sable sécurisé?
- 23. Portage du code de prétraitement du fichier de C à C#
- 24. JavaScript: exécuter du code dans un contexte spécifique
- 25. Comment exécuter du code à partir d'un module qui réside dans Microsoft Office Access Class Object
- 26. Exécuter interpréter C++?
- 27. Comment récupérer du code HTML en C/C++
- 28. Pourquoi ne puis-je pas exécuter ce code? Pourquoi ne puis-je pas exécuter ce code?
- 29. Exécuter le code à la fin du module/classe, comme le test/unité de Ruby
- 30. Comment exécuter une fonction Javascript à partir d'un C# WebBrowser?
Cher Dieu, non, ne laissez pas les utilisateurs entrer sql directement dans une zone de texte! –
Pour clarifier: ce n'est pas seulement le problème de sécurité, bien que ce soit une grosse affaire. Il est tout simplement trop facile pour les utilisateurs, même bien intentionnés, de mettre en place une requête qui fonctionne mal, d'arroser votre serveur et de créer un déni de service sur votre base de données. –
Je ne veux pas battre un cheval mort, mais il est vraiment important que vous compreniez que c'est une idée terrible. –