Serveur d'impression

Easy SQL Server Tool utilisant C # – Bien choisir son serveur d impression

Par Titanfall , le 6 octobre 2019 - 25 minutes de lecture

introduction

* Veuillez visionner mon lien vidéo Youtube pour apprendre mon outil Easy SQL SERVER en utilisant C #.

Image 1

Easy SQL Server Tool permettra aux utilisateurs de créer une base de données SQL Server, de supprimer une base de données, de charger tous les noms de bases de données à partir d'un serveur SQL sélectionné, de créer une nouvelle table, d'insérer des enregistrements dans une table, de sélectionner des enregistrements dans une table et de lier le résultat à une grille, d'exporter la sélection. résultat au format de fichier CSV, Supprimer la table, Supprimer TOUS les enregistrements d'une table sans écrire de script SQL.

Nous avons utilisé des objets SMO (SQL Server Management Objects) pour créer par programme une base de données, une table, etc.

Qu'est-ce que SMO (SQL Server Management Objects)?

Les objets de gestion SQL Server (SMO) sont un ensemble d'objets permettant de gérer SQL Server par programme. En utilisant des objets SMO, nous pouvons nous connecter par programme au serveur SQL, Obtenir les collections de tous les noms de base de données, Créer une nouvelle base de données, Sauvegarder la base de données, Restaurer la base de données, Créer une table, Obtenir des collections du nom de la table pour une base de données donnée, Obtenir tous les détails de colonne d’une table donnée, etc.

Site Web de référence: pour en savoir plus sur SQL Server SMO, veuillez afficher tous ces liens,

Fonctionnalités de Shanu Easy SQL Server Tool (SESST)

Image 2

  1. Connectez-vous à SQL Server.
  2. Détails de la table
  3. Onglet Script SQL (onglet Créer une table / onglet Insertion et suppression d'enregistrements / onglet Sélection d'une requête).
  4. Fenêtre de sortie

Ici, nous verrons les détails de chaque partie,

Étape 1: connexion à SQL Server

Image 3

SQL Server Connect

Nous pouvons nous connecter à n’importe quel serveur SQL de notre réseau. Nous devons donner le nom ou l'adresse IP du serveur SQL, l'ID de connexion et le mot de passe SQL Server pour nous connecter à SQL Server.

Créer une nouvelle base de données

Vérifiez que le nom de base de données saisi par l'utilisateur existe ou non dans SQL Server. S'il existe, affichez le message à l'utilisateur. S'il n'y a pas de base de données avec le nom entré par l'utilisateur, une nouvelle base de données sera créée.

Image 4

Charger la base de données

Chargez tout le nom de la base de données dans la liste déroulante pour créer la table.

Supprimer la base de données

L'utilisateur peut supprimer la base de données sélectionnée de SQL Server. Avant de supprimer la boîte de confirmation sera affiché à l'utilisateur pour supprimer ou non. Si l'utilisateur clique sur ok, la base de données sélectionnée sera supprimée.

Image 5

Sauvegarde de la base de données

Sauvegardez la base de données sélectionnée dans n'importe quel dossier sélectionné.

Image 6

Restauration de base de données

L'utilisateur peut restaurer la base de données en sélectionnant le fichier «.bak» dans le dossier sélectionné.

Image 7

Étape 2: Détails de la table

Image 8

Tableau de charge:

L'utilisateur doit d'abord sélectionner la base de données pour répertorier tous les noms de table. Après avoir sélectionné la base de données et en cliquant sur Charger les noms de table, tous les noms de table de la liste déroulante seront chargés.

Supprimer le tableau

L'utilisateur peut supprimer la table sélectionnée de SQL Server. Avant de supprimer la boîte de confirmation sera affiché pour que l'utilisateur supprime ou non. Si l'utilisateur clique sur ok, la table sélectionnée sera supprimée.

Étape 3: Onglet Script SQL

Ici, nous aurons 3 onglets, le premier onglet pour créer un tableau, le deuxième onglet pour insérer et supprimer des enregistrements et le dernier troisième onglet pour sélectionner une requête. Nous allons voir les trois onglets ici.

Créer une table

Image 9

Ici, l'utilisateur peut créer sa propre table sans écrire de requête SQL. Tout d'abord, l'utilisateur doit sélectionner la base de données dans laquelle la table doit être créée. Après avoir sélectionné la base de données, l'utilisateur peut entrer son nom de table SQL dans la zone de texte. Après avoir entré le nom de la table, l'utilisateur doit ajouter des colonnes pour cette table. Sans l'ajout de colonnes, la table ne peut pas être créée.

Ajout de colonnes

Image 10

L'utilisateur peut ajouter des colonnes pour créer une nouvelle table. Toutes ces colonnes seront ajoutées localement à la grille pour créer finalement une table. L'utilisateur peut ajouter un nombre quelconque de colonnes, supprimer la colonne sélectionnée et également supprimer toutes les colonnes en cliquant sur Effacer les colonnes. L'ajout et la suppression de colonnes ne concernent pas la base de données. Ce sera donc un emplacement temporaire permettant d'ajouter des colonnes pour la création de la table. Après avoir ajouté toutes les colonnes de la table, l'utilisateur peut cliquer sur Créer une table bouton pour créer une nouvelle table avec des détails de colonne donnés.

Type de données:

Pour l'instant, seuls 3 types de données ont été utilisés.

  1. Int (Nombres)
  2. varchar (pour le texte)
  3. nVarchar (pour les nombres et le texte)

L'utilisateur peut également ajouter chaque taille de données de colonne. Pour l'entier, la taille ne sera pas utilisée, mais pour Varchar et nVarchar, l'utilisateur du type de données peut ajouter la taille des données de la colonne. L’utilisateur peut également définir la taille maximale pour les types Varchar et nVarchar en sélectionnant Taille max case à cocher.

Par exemple, nous pouvons voir l'image suivante. Ici, nous avons ajouté 4 colonnes à la grille et en ajoutant une nouvelle colonne, nous pouvons voir chaque colonne Type de données et Taille de la grille. Après avoir ajouté toutes les colonnes, nous cliquons sur le bouton Créer une table. Nous pouvons voir le message de confirmation lorsque la table a été créée et que notre nouvelle table a été ajoutée à la liste déroulante des listes de tables.

Image 11

Onglet Insérer et supprimer des enregistrements

Nous allons utiliser la table de test récemment créée pour l'insertion de la démo.

Image 12

Ici, nous pouvons voir dans l'image ci-dessus que nous avons sélectionné la table «test» dans la liste des tables. Pour insérer un enregistrement dans la table sélectionnée, nous devons cliquer sur le bouton load table Détails à insérer bouton. En cliquant dessus, nous afficherons tout le nom de la colonne avec la zone de texte. En fonction du type de données de chaque colonne, nous ajouterons une zone de texte avec une longueur maximale. Si le type de données de la colonne est Integer, nous ajouterons alors une zone de texte numérique pour cette colonne. Cet utilisateur ne peut entrer que des chiffres dans cette zone de texte. Pour Varchar et nVarchar, nous vérifierons pour chaque taille de colonne si elle est maximale, nous définissons la longueur maximale de la zone de texte sur 200; par cet utilisateur ne peut entrer que 200 caractères. Si size est défini pour column, nous définirons la taille de colonne pour textbox maxlength.

Insérer:

Image 13

Après avoir chargé tous les détails de la colonne avec TextBox, l’utilisateur peut entrer la valeur à insérer pour chaque colonne. Une fois que l'utilisateur a entré la valeur, cliquez sur le bouton Insérer dans la table sélectionnée bouton pour insérer un nouvel enregistrement. Identique à cet utilisateur, cet utilisateur peut entrer un nombre illimité d'enregistrements pour la table sélectionnée. Si vous souhaitez ajouter plus de fonctionnalités à partir du code, vous pouvez ajouter vos fonctionnalités, par exemple, en vérifiant la valeur en double avant l'insertion, etc.

Supprimer tous les enregistrements: L'utilisateur peut supprimer tous les enregistrements de la table sélectionnée. Ici, dans cet exemple, nous ne vérifions aucune condition pour supprimer les enregistrements. Si vous devez ajouter d'autres fonctionnalités, vous pouvez modifier le code et ajouter vos propres fonctions, par exemple, Supprimer des enregistrements d'une table en fonction d'une condition, etc.

Sélectionnez l'onglet de requête

Image 14

Pour sélectionner les enregistrements dans une base de données et afficher le résultat, l'utilisateur doit d'abord sélectionner la base de données, puis sélectionner la table dans la liste des tables pour créer une requête de sélection SQL.
L'utilisateur peut sélectionner les détails à l'aide de trois fonctionnalités,

1) Toutes les colonnes: Si la case Toutes les colonnes est cochée, tous les résultats de la colonne seront affichés dans la grille de la fenêtre de sortie. (Ceci est similaire à * dans la requête select, par exemple select * from nomtable). Nous pouvons voir à partir de l'image ci-dessus. La case à cocher Toutes les colonnes sera chargée par défaut. Après avoir sélectionné la table et lorsque l'utilisateur clique sur Exécuter, sélectionnez la requête, tous les détails de la colonne seront chargés dans la grille de fenêtre de sortie suivante.

2) Colonnes sélectionnées par l'utilisateur: Si l'utilisateur souhaite afficher uniquement des colonnes particulières de la table, il peut cliquer sur le bouton Charger les colonnes de la table à sélectionner pour afficher tous les noms de colonnes des tables dans CheckedListbox. Ici, l'utilisateur peut sélectionner les colonnes dont il a besoin et, par défaut, cocher tous les noms de colonnes. L'utilisateur peut décocher les colonnes inutiles et décocher la case Toutes les colonnes pour afficher uniquement les colonnes sélectionnées.

3) L'utilisateur peut écrire une requête de sélection SQL: L'utilisateur peut également écrire sa requête SQL Select pour afficher le résultat.

Image 15

Par exemple, si l'utilisateur souhaite écrire sa propre requête SQL pour joindre la table 3 et afficher le résultat. Pour écrire une requête SQL Select, l'utilisateur doit vérifier la Requête SQL Select case à cocher et après avoir écrit une requête, l’utilisateur de requête peut cliquer sur le bouton Exécuter la requête de sélection pour voir le résultat. Nous pouvons voir sur l'image ci-dessus que nous avons écrit un exemple de requête de jointure SQL pour joindre trois tables. En cliquant sur la requête d'exécution, le résultat a été lié dans la grille.

Vérification de l'injection SQL dans la requête de saisie saisie par l'utilisateur:

Image 16

Nous avons également vérifié l’injection SQL avant d’exécuter la requête SQL Select saisie par l’utilisateur. Nous avons créé une liste de tableaux pour ajouter toute la chaîne d'injection SQL et nous allons vérifier si le mot du tableau correspond à la requête de sélection entrée par l'utilisateur. Par exemple, nous pouvons voir l'image ci-dessus puisqu'après la requête sélectionnée, nous avons entré une requête directe. Mais quand on clique sur Exécuter la requête de sélection bouton nous affichons le message car drop n'est pas accepté dans la requête select.

Voici la liste de la chaîne d'injection SQL que je vérifie si vous avez besoin que vous puissiez ajouter ou supprimer selon vos besoins.

chaîne[]    sqlInjectionArray =  "créer", "laissez tomber", "effacer", "insérer", "mise à jour", "tronquer","accorder ","impression","sp_executesql, "objets", "déclarer", "table", "dans",
"sqlcancel", "sqlsetprop", "sqlexec", "sqlcommit", "révoquer", "retour en arriere", "sqlrollback", "valeurs", "sqldisconnect", "sqlconnect", "utilisateur", "utilisateur_système", "utilisation", "nom_schéma", "schémas", "information_schema", "dbo", "client", "propriétaire_db", "db_", "table", "@@ ", "Utilisateurs", "exécuter", "sysname", "sp_who", "sysobjects", "sp_", "sysprocesses ", "Maître", "sys", "db_", "est_", "exec", "fin", "xp_", "; -", "", "modifier", "commencer", "le curseur", "tuer", "-"    , "nom de tabulation", "ou", "sys";  

Enregistrer la requête sélectionnée: L'utilisateur peut également enregistrer la requête de sélection en tant que fichier texte dans le dossier sélectionné pour pouvoir utiliser ultérieurement la requête de sélection.

Image 17

Ouvrir la requête de sélection enregistrée: L'utilisateur peut également ouvrir la requête de sélection enregistrée pour exécuter le script de sélection.

Image 18

Exporter le résultat au format de fichier CSV: L'utilisateur peut également exporter le résultat sélectionné au format CSV. Ici, dans l'image suivante, nous pouvons voir que le résultat a été exporté sous forme de fichier CSV.

Image 19

Visual Studio 2015: Vous pouvez le télécharger à partir de havant.

Référence SQL SERVER SMO: Pour travailler avec SQL Server SMO, nous devons ajouter 4 références importantes à notre projet,

  • Microsoft.SqlServer.ConnectionInfo.dll
  • Microsoft.SqlServer.Smo.dll
  • Microsoft.SqlServer.Management.Sdk.Sfc.dll
  • Microsoft.SqlServer.SqlEnum.dll

Vous pouvez trouver la référence de ce chemin (Ici, nous avons utilisé SQL Server 2014),

C: Programmes Microsoft SQL Server 120 SDK Assemblies

Ajoutez toutes ces 4 références d'assemblage à votre projet,

Image 20

En utilisant le code

L'objectif principal était de créer un outil Easy SQL simple et facile à utiliser. Toutes les fonctionnalités ont été ajoutées sous une forme principale avec Tab. Nous avons créé 2 classes:

  1. smoSQLServerClass: Dans cette classe, nous avons créé une fonction permettant de se connecter, se déconnecter à SQL Server, créer une base de données, supprimer une base de données, sauvegarder une base de données, écrire le fichier texte Exception to Log dans un dossier exécutable, créer une table, etc.
  2. sqlBizClass: Dans cette classe, nous exécutons toute la logique métier pour notre formulaire principal, par exemple, création d'une requête dynamique, Création de contrôles dynamiques et liaison au panneau, Lier tous les noms de table renvoyés de SMOSQLServerClass aux contrôles Combobox, Vérifier l'injection SQL pour la requête Sélectionner et renvoyer le résultat vrai ou faux, etc.

Nous allons voir ici quelques parties de code importantes utilisées dans Easy SQL Server Tool. Toute la partie code a été bien commentée, afin que l'utilisateur puisse facilement comprendre le code.

Se connecter à SQL Server

Dans cet article, nous avons mentionné l'utilisation des objets SMO de SQL Server. Nous devons ajouter 4 références importantes à notre projet. Utiliser SMO ServerConnection nous pouvons nous connecter au serveur SQL. Nous devons définir le nom du serveur SQL sur ServerInstance et définissez le nom d'utilisateur et le mot de passe SQL Server. Après la connexion, nous vérifions si la connexion est ouverte et renvoyons la valeur booléenne à notre fonction principale pour afficher le message approprié à l'utilisateur.

Publique bool SqlServerConnect ()
          
            essayer  
            
                servConn = Nouveau ServerConnection ();
                servConn.ServerInstance = nom_serveur;
                servConn.LoginSecure = faux;
                servConn.Login = LoginID;
                servConn.Password = mot de passe;
                servConn.Connect ();  
                si(servConn.IsOpen)
                  
                    revenir vrai;
                  
                autre  
                  
                    revenir faux;
                
                 
              
            capture (Exception ex)
            
                writeLogMessage (ex.Message.ToString ());
  
              
            revenir faux;
          

Écrire un message d'exception dans le fichier journal:

Nous écrirons tous les messages d'erreur d'exception dans le fichier journal avec la date et l'heure.

Publique vide writeLogMessage (Chaîne logMessage)
          
            chaîne chemin = Application.StartupPath + @ " LogFile.txt ";
            logMessage = logMessage + "    - sur " + DateTime.Now.ToString ();  
            si (! File.Exists (path))
              
                en utilisant (StreamWriter tw = File.CreateText (path))
                
                    tw.WriteLine (logMessage);
                    tw.Close ();
                
              
            autre  
            
                StreamWriter tr = Nouveau StreamWriter (chemin);
                tr.WriteLine (logMessage);
                tr.Close ();
            
          

Charger le nom de la base de données

Dans l'événement click du bouton Load Database Name, nous allons passer le contrôle comboBox à la méthode de classe Biz. Dans la méthode biz class, nous appellerons la classe SMO pour obtenir tout le nom de la base de données et l'ajouter à la liste déroulante. Ici, dans cette méthode, je vérifierai la base de données principale et n’ajouterai pas le nom pour des raisons de sécurité. Par exemple, l’utilisateur peut supprimer la base de données de notre formulaire principal. De même, vous pouvez modifier le code pour restreindre toute base de données l’affichant dans notre formulaire principal.

Publique vide loaddbNames (cbo ComboBox)
        
            
            DatabaseCollection dbnamesCol = objSQL.loaddbNames ();
            cbo.Items.Clear ();
            cbo.Items.Add ("")  
            si (dbnamesCol! = nul)
              
                chaîne dbnames = "";  
                int ival = 0;  
                pour chaque (Base de données db dans dbnamesCol)
                                 
  
                    si (db.Name! = "Maître")
                    
                        cbo.Items.Add (db.Name);
                    
                
            cbo.SelectedIndex = 0;
          

Dans SMO Class, nous allons charger tout le nom de la base de données pour un serveur SQL donné et le renvoyer en tant que DatabaseCollection à la classe appelante.

Publique DatabaseCollection loaddbNames ()
        
            DatabaseCollection dbNames = nul;  
            essayer  
                             
                si (SqlServerConnect ())
            
                Server srv = Nouveau Serveur (servConn);
                    dbNames = srv.Databases;
                    SqlServerDisconnect ();
                
              
            capture (Exception ex)
            
                writeLogMessage (ex.Message.ToString ());
              
            revenir dbNames;
          

Créer une base de données

Dans cette fonction, nous vérifions d'abord que la base de données existe déjà avec le nom saisi par l'utilisateur. Si la base de données portant le même nom n'existe pas, nous créerons une nouvelle base de données dans notre serveur SQL. Si la base de données existe déjà dans SQL Server, renvoyez le message car la base de données existe.

Publique chaîne createourDatabase (chaîne Nom de la base de données)
          
  
            essayer  
              
                si (SqlServerConnect ())
                
                    Server srv = Nouveau Serveur (servConn);
  
                    Database database = srv.Databases[DatabaseName];  
                    si (base de données == nul)
                    
                        base de données = Nouveau Base de données (srv, DatabaseName);
                        base de données.Créer ();
                        database.Refresh ();
                        SqlServerDisconnect ();  
                        revenir "Base de données créée avec succès! ";
                      
                    autre  
                    
                        SqlServerDisconnect ();  
                        revenir "La base de données existe déjà ";
                    
                  
                autre  
                  
                    revenir "Entrez des détails de connexion SQL valides ";
                
              
            capture (Exception ex)
            
                writeLogMessage (ex.Message.ToString ());
              
            revenir "Désolé erreur lors de la création de la base de données ";
          

Créer une table

Dans le bouton Créer, nous allons passer le nom de la base de données sélectionné par l'utilisateur, le nom de la table saisi par l'utilisateur avec les détails de la colonne sous forme de DataTable vers la classe SMO. Dans cette fonction, nous allons vérifier si la table existe déjà ou non; si exist renvoie un faux message à l'utilisateur et si ce n'est pas le cas, nous allons créer une nouvelle table avec des détails de colonne.

Publique chaîne createTable (chaîne Nom de la base de données, chaîne TableName, DataTable dtColumns)
        {  
            essayer  
            {  
                si (SqlServerConnect ())
                {
                    Server srv = Nouveau Serveur (servConn);
                    Database database = srv.Databases[DatabaseName];  
                    si (base de données! = nul)
                    {  
                        bool tableExistes = base de données.Tables.Contains (NomTable);  
                        si (tableExists)
                        
                            SqlServerDisconnect ();  
                            revenir "Table Exist.kindly Entrez un nom de table différent ";
                          
                        autre  
                        
                            Tableau tbl = Nouveau Table (base de données, Nom de la table);                   
                            pour chaque (DataRow dr dans dtColumns.Rows)
                              
                                chaîne nomcolonne = dr[[[["ColumName "].ToString ();  
                                chaîne DataType = dr[[[["Type de données"].ToString ();  
                                chaîne dataSize = dr[[[["Taille"].ToString ();
                                Microsoft.SqlServer.Management.Smo.Column columntoAdd =nul;                          
                                commutateur (Type de données)
                                  
                                    Cas "Varchar ":  
                                        si(dataSize =="max ")
                                        
                                            columntoAdd = Nouveau Column (tbl, columnName, Microsoft.SqlServer.Management.Smo.DataType.VarCharMax);
                                          
                                        autre si (dataSize! = "")
                                        
                                            columntoAdd = Nouveau Column (tbl, columnName, Microsoft.SqlServer.Management.Smo.DataType.VarChar (Convert.ToInt32 (dataSize)));
                                          
                                        Pause;  
                                    Cas "Int ":
                                            columntoAdd = Nouveau Column (tbl, columnName, Microsoft.SqlServer.Management.Smo.DataType.Int);                                       
                                        Pause;  
                                    Cas "nVarchar ":  
                                        si (dataSize == "max ")
                                        
                                            columntoAdd = Nouveau Column (tbl, columnName, Microsoft.SqlServer.Management.Smo.DataType.NVarCharMax);
                                          
                                        autre si (dataSize! = "")
                                        
                                            columntoAdd = Nouveau Column (tbl, columnName, Microsoft.SqlServer.Management.Smo.DataType.NVarChar (Convert.ToInt32 (dataSize)));
                                          
                                        Pause;
                                  
                                si(columntoAdd! =nul)
                                
                                tbl.Columns.Add (columntoAdd);
                                
                            
                            tbl.Create ();
                            SqlServerDisconnect ();  
                            revenir "Table créée avec succès! ";
                        
                    }
                }  
                autre  
                  
                    revenir "Entrez des détails de connexion SQL valides ";
                
            }  
            capture (Exception ex)
            
                writeLogMessage (ex.Message.ToString ());
              
            revenir "Désolé erreur lors de la création de la table ";
        } 

Charger les détails de la colonne pour l'insertion

Cliquez sur le bouton Charger les détails de la colonne pour transmettre le contrôle du panneau à notre classe biz afin d'obtenir tous les détails de colonne du tableau sélectionné et de lier une zone de texte avec le nom de la colonne au panneau. De notre classe SMO, nous obtiendrons tous les détails de colonne du tableau et le retournerons ColumnCollection. Dans la classe biz utilisant foreach, nous allons ajouter tous les détails de la colonne, comme le contrôle Nom en tant qu'étiquette, pour afficher le nom de la colonne et ajouter une zone de texte pour la saisie utilisateur. Dans cette méthode, nous vérifierons le type et la taille de la colonne. Si le type de colonne est Integer, nous allons définir la zone de texte comme zone de texte numérique. Si le type de colonne est Varchar ou NVarchar, nous vérifions la longueur de la colonne et attribuons la longueur à TextBox Maxlenght.

Publique vide loadTableColumnDetails (Panel pnControls, chaîne Nom de la base de données,chaîne Nom de la table)
        {
            ColumnCollection tableColumnDetail = objSQL.loadTableColumnDetails (DataBaseName, TableName);
            pnControls.Controls.Clear ();  
          
            si (tableColumnDetail! = nul)
              
                chaîne dbnames = "";  
                int lableHeight = 20;  
                int textboxHeight = 20;  
                int lablewidth = 100;  
                int lableXVal = dix;  
                int lableYVal = dix;  
  
                pour chaque (Column ColName dans tableColonneDetail)
                  
                    chaîne s = nomcolonne.nom;
  
                    Rnd aléatoire = Nouveau Aléatoire();  
                    int randNumber = rnd.Next (1, 1000)
  
                    
                    Label ctrl = Nouveau Étiquette();
                    ctrl.Location = Nouveau Point (lableXVal, lableYVal + 6);
                    ctrl.Size = Nouveau Taille (lablewidth, lableHeight);
                    ctrl.Nom = "lbl_ " + randNumber; ;
                    ctrl.Font = Nouveau System.Drawing.Font ("NativePrinterFontA ", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((octet) (0)));
                    ctrl.Text = colName.Name;
                    pnControls.Controls.Add (ctrl);
  
                    
                    TextBox ctrltxt = Nouveau Zone de texte();
                    ctrltxt.Location = Nouveau Point (lableXVal + 110, lableYVal);
                    ctrltxt.Size = Nouveau Taille (lablewidth + 40, lableHeight);
                    ctrltxt.Name = "SMS_" + randNumber;
                    ctrltxt.Font = Nouveau System.Drawing.Font ("NativePrinterFontA ", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((octet) (0)));
                    ctrltxt.Text = "";  
                      
                    si (colName.DataType.Name == "int ")
                    
                        ctrltxt.MaxLength = 20;
                        ctrltxt.KeyPress + = Nouveau KeyPressEventHandler (textBox_KeyPress);
                      
                    autre  
                      
                        si(colName.DataType.MaximumLength.ToString ()! ="-1")
                        
                            ctrltxt.MaxLength = Convert.ToInt32 (colName.DataType.MaximumLength.ToString ());
                          
                        autre  
                        
                            ctrltxt.MaxLength =100;
                        
                    
                      
                    pnControls.Controls.Add (ctrltxt);
  
                    
                    Label ctrllbl = Nouveau Étiquette();
                    ctrllbl.Location = Nouveau Point (lableXVal + 112, lableYVal + 6)
                    ctrllbl.Size = Nouveau Taille(1, 1)
                    ctrllbl.Name = "_lblDT_ " + randNumber; ;
                    ctrllbl.Font = Nouveau System.Drawing.Font ("NativePrinterFontA ", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((octet) (0)));
                    ctrllbl.Text = colName.DataType.Name;
                    ctrllbl.Visible = faux;
                    pnControls.Controls.Add (ctrllbl);  
  
                    si (lableXVal + 360 < pnControls.Width-110)
                    
                        lableXVal = lableXVal + 270;
                      
                    autre  
                    
                        lableXVal = dix;
                        lableYVal = lableYVal + 40;
                    
                
            
        }  

        privé vide textBox_KeyPress (objet expéditeur, KeyPressEventArgs e)
        
            e.Handled =! char.IsDigit (e.KeyChar) &&! char.IsControl (e.KeyChar);
          

En classe SMO loadTableColumnDetails method nous obtiendrons tous les détails de la colonne pour la base de données et le nom de la table donnés renverront les détails de la colonne sous la forme de la classe biz ColumnCollection pour l’ajout de contrôles dynamiques permettant à l’utilisateur de saisir des enregistrements.

Publique ColumnCollection loadTableColumnDetails (chaîne Nom de la base de données,chaîne Nom de la table)
        {
            ColumnCollection columnDetails = nul;  
            essayer  
            {  
                si (SqlServerConnect ())
                
                    Server srv = Nouveau Serveur (servConn);
                    Base de données db = srv.Databases[DatabaseName];  
                    bool tableExists = db.Tables.Contains (TableName);  
                    si (tableExists)
                                         
                        pour chaque (Table de table dans db.Tables)
                          
                            si (table.Name == TableName)
                            
                                columnDetails = table.Columns;  
                                Pause;
                            
                        
                    
                                      
                    SqlServerDisconnect ();
                
            }  
            capture (Exception ex)
            
                writeLogMessage (ex.Message.ToString ());
              
            revenir columnDetails;
        }  

Insérer des enregistrements

Dans le bouton Insérer, nous passons le panneau Détails de l'insertion ajouté à l'utilisateur Contrôle avec le nom de la base de données et le nom de la table à la classe biz. Dans la classe biz, nous allons créer une requête d'insertion dynamique avec l'ajout de tous les noms de colonne, ajouter toutes les valeurs d'insertion en tant que paramètre et transmettre le SqlCommand à la classe SMO. insertQueryméthode pour insérer un nouvel enregistrement dans la table donnée.

Publique chaîne saveTableInsertQuery (Panel pnControls, chaîne Nom de la base de données, chaîne Nom de la table)
          
            chaîne résultat = "";
            StringBuilder sqlQuery = Nouveau StringBuilder ("INSÉRER DANS " + Nom de la table);
            StringBuilder Insert = Nouveau StringBuilder ("    (")
            StringBuilder values ​​= Nouveau StringBuilder ("VALEURS (")
            SortedDictionary SD = Nouveau SortedDictionary();  
  
            chaîne nomcolonne = "";  
            chaîne colvalue = "";  
            chaîne dataType = "";  
            int iCount = 0;
  
            SqlCommand command = Nouveau SqlCommand ();  
  
            pour chaque (Contrôle p dans pnControls.Controls)
              
                  
                si (p.Name.ToString (). Substring (0, 4) == "lbl_ ")
                
                    nomcolonne = p.Text;
                  
                autre si (p.Name.ToString (). Substring (0, 4) == "SMS_")
                
                    colvalue = p.Text;
                  
                autre si (p.Name.ToString (). Substring (0, 4) == "_lbl ")
                
                    Insert.Append (columnName);
                    Insert.Append (", ")
  
                    sd.Add (columnName, colvalue);
                    values.Append ("@ " + columnName);
  
                    values.Append (", ")  
                    si (p.Text == "int ")
                    
                        command.Parameters.Add ("@ " + columnName, SqlDbType.Int) .Value = colvalue;
                      
                    autre si (p.Text == "varchar ")
                    
                        command.Parameters.Add ("@ " + columnName, SqlDbType.VarChar) .Value = colvalue;
                      
                    autre si (p.Text == "nvarchar ")
                    
                        command.Parameters.Add ("@ " + columnName, SqlDbType.NVarChar) .Value = colvalue;
                    
                
              
            chaîne sqlresult = Insert.ToString (). Remove (Insert.Length - 2) + ") ";
  
            sqlQuery.Append (sqlresult);  
              
            chaîne valueresult = values.ToString (). Remove (values.Length - 2) + ") ";
  
            sqlQuery.Append (valueresult);
            sqlQuery.Append ("; ")
              
                command.CommandText = sqlQuery.ToString ();
                command.CommandType = CommandType.Text;  
  
            revenir objSQL.insertQuery (DataBaseName, sqlQuery.ToString (), commande);
  
          

Sélectionner une requête

Dans le bouton Sélectionner, cliquez sur le type de requête sélectionné. Si la case SQL Select Query n'est pas cochée, nous transmettons tous les détails de la colonne à la classe biz. selectRecordsfromTableQuery Méthode pour créer une requête SQL Select dynamique. Si l'utilisateur a sélectionné toutes les colonnes, nous utiliserons «select * from nomtable». Si l'utilisateur n'a coché que quelques colonnes à afficher, nous allons créer une requête dynamique, ajouter toutes les colonnes sélectionnées par l'utilisateur, puis renvoyer le résultat sous forme de DataTable à lier dans la grille.

Publique DataTable selectRecordsfromTableQuery (bool isAllColumns, CheckedListBox chkListBoxCols, chaîne Nom de la base de données, chaîne Nom de la table)
          
            chaîne résultat = "";
            StringBuilder sqlQuery = Nouveau StringBuilder ("Sélectionnez * FROM " + Nom de la table);  
  
            chaîne sqlresult = sqlQuery.ToString ();  
            si (! isAllColumns)
            
                sqlQuery = Nouveau StringBuilder ("Sélectionnez " )  
                pour chaque (objet itemChecked dans chkListBoxCols.CheckedItems)
                  
                    chaîne nomcols = itemChecked.ToString ();
                    sqlQuery.Append (nom_colonne +", ")
                
                sqlresult = sqlQuery.ToString (). Remove (sqlQuery.Length - 2) + "    DE " + Nom de la table;
            
  
            SqlCommand command = Nouveau SqlCommand ();
            command.CommandText = sqlresult;
            command.CommandType = CommandType.Text;  
  
            revenir objSQL.selectRecordsfromTableQuery (DataBaseName, commande);
  
          

Points d'interêts

J'espère que vous aimez tous cet article. Sans écrire de script SQL, les membres peuvent désormais se connecter à SQL Server, créer des bases de données, des tables, insérer et sélectionner des enregistrements. Il y a quelques limitations dans cet outil, comme nous ne pouvons ajouter que 3 types de données pour le moment, etc. Il n'y a aucune limite pour nos attentes, maintenant le code et l'outil sont dans votre main, vous pouvez ajouter autant de fonctionnalités que vous le souhaitez.

Histoire

shanuEasySQLTool.zip – 2016-01-05

Click to rate this post!
[Total: 0 Average: 0]

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.