Permet d'executer des requetes SQL, taper, coller ou via un fihcier *.sql contenant les requetes.
Affiche le resultat des requetes dans l'appli et peut telecharger le resultat sous fichier txt
Pour utiliser l'appli, il faut avoir d'installé les commandes :
- sqlplus
- tnsping
Source / Exemple :
' Developpé par Denpx
' Date: 01/12/2008
Public Partial Class MainForm
Public Sub New()
Me.InitializeComponent()
' Renseigne cette note d'information dans le textbox
textBox_result.Text = "Pour Utiliser << Executeur SQL >>, il faut installer sur son poste :" & vbCrLf & vbCrLf & _
"- Sqlplus" & vbCrLf & _
"- TnsPing" & vbCrLf & vbCrLf & _
"NB : Il faut selectionner un fichier de requete ou taper sa requete"
End Sub
' Declaration des variables public
Public StreamAll As Object
Public Path_Fichier As String
Public user As String
Public mdp As String
Public dbname As String
Public appconf As String = "Executeur SQL.exe.config"
Sub Button_execClick(ByVal sender As Object, ByVal e As EventArgs)
' Verifier que user, mdp et dbname sont renseignés
If comboBox_user.Text = "" then
Messagebox.show("Il faut renseigner le user","Alerte")
Exit sub
Else If comboBox_mdp.Text = "" Then
Messagebox.show("Il faut renseigner le mdp","Alerte")
Exit sub
Else If comboBox_dbname.Text = "" Then
Messagebox.show("Il faut renseigner la dbname","Alerte")
Exit sub
End If
' Lance la fonction de ping de la BD
Call Tns_Ping()
End Sub
Sub Button_quitterClick(ByVal sender As Object, ByVal e As EventArgs)
' Quitte l'application
End
End Sub
Sub TextBox_sqlTextChanged(ByVal sender As Object, ByVal e As EventArgs)
' Active le bouton d'execution si du texte est renseigné dans le champ de la requete
If textBox_sql.Text <> "" Then
button_exec.Enabled = True
End If
End Sub
Sub Button_selectClick(ByVal sender As Object, ByVal e As EventArgs)
' Ouvre la fenetre de selection d'un fichier de requete
openFileDialog_select.ShowDialog()
End Sub
Sub OpenFileDialog_selectFileOk(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs)
' Renseigne le textbox avec le chemin du fichier selectionne pour information
textBox_select.Text = openFileDialog_select.FileName
' Lance la fonction pour afficher le fichier sql dans la fenetre
Call FicRequete(textBox_select.Text)
End Sub
Sub FicRequete(Path_File As String)
' Declaration des Variables
Dim fs As Object
Dim Read As Object
Dim StreamAll As String = Nothing
fs = CreateObject("Scripting.FileSystemObject")
' Ouverture du fichier selectionne
Read = fs.opentextfile(Path_File, 1, 0)
' Renseigne le contenu du fichier dans une variable
Do While Read.AtEndOfStream <> True
StreamAll = Read.readall
Loop
' Ferme la lecture du fichier
Read.close
' Affiche le contenu du fichier de requete dans la fenetre
textBox_sql.Text = StreamAll
If StreamAll <> "" Then
' active le bouton d'execution si le fichier n'est pas vide
button_exec.Enabled = true
Else
textBox_sql.Text = "Le Fichier de requete est vide"
Exit sub
End If
End Sub
Sub Tns_Ping()
' Declaration des variables
Dim objShell As Object
Dim objScriptExec as Object
Dim strSqlResults As Object
dbname = comboBox_dbname.Text
objShell = CreateObject("WScript.Shell")
objScriptExec = objShell.Exec("tnsping " & dbname)
strSqlResults = LCase(objScriptExec.StdOut.ReadAll)
If InStr(strSqlResults, "ok") Then
Call Verif_Fic_File()
Else
textBox_result.Text = dbname & " : ne repond pas, verifier la syntaxe !"
Exit Sub
End If
End Sub
Sub Verif_Fic_File()
' Fonction permettant de savoir si un fichier a ete selectionne ou si c'est un requete tapée
If textBox_select.Text <> "" Then
Call Verif_Exit(textBox_select.Text)
Exit Sub
Else If textBox_sql.Text <> "" Then
Call Exec_Requete()
Exit Sub
Else
textBox_result.Text = "Il faut selectionner un fichier de requete ou taper sa requete"
Exit Sub
End If
End Sub
Sub Verif_Exit(Path_File As String)
' Declaration des variables
Dim fs As Object
Dim Read As Object
Dim StreamLine As String = Nothing
Dim PosExit As String
Dim Res1 As String = Nothing
Dim Res2 As String = Nothing
fs = CreateObject("Scripting.FileSystemObject")
' Ouvre le fichier de requete
Read = fs.opentextfile(Path_File, 1, 0)
Do While Read.AtEndOfStream <> True
StreamLine = Read.readLine
' cherche le mot exit dans le texte
PosExit = InStr(1, StreamLine, "exit")
If (posExit = 1) Then
Res1 = "true"
Else
Res2 = "false"
End If
Loop
' Fermeture du fichier
Read.close
' Si le mot exit n'est pas trouve alors execution
If Res1 = "true" Then
Call Exec_Fic(Path_File)
Else
' Si le mot exit est trouve alors appel de la fonction pour l'ajouter
Call Add_Exit(Path_File)
End If
End Sub
Sub Add_Exit(Path_File As String)
' Declaration des variables
Dim ObjetFichierW As StreamWriter
Dim ex As String
ex = vbCrLf & "exit;"
' ouvre le fichier de requete
ObjetFichierW = New StreamWriter(Path_File, True)
' Ajoute a la fin du fichier : exit;
ObjetFichierW.WriteLine(ex)
ObjetFichierW.Flush()
' Ferme le fichier de requete
ObjetFichierW.Close()
' Execution du fichier de requete
Call Exec_Fic(Path_File)
End Sub
Sub Exec_Fic(Path_File As String)
' Permet de ne pas planter si une erreur est rencontrée
On Error Resume Next
' Declaration des variables
Dim objShell As Object
Dim objScriptExec As Object
Dim strSqlResults As Object
Dim cmd As String
Dim Er As Object
' Renseignement des variables
user = comboBox_user.Text
mdp = comboBox_mdp.Text
dbname = comboBox_dbname.Text
cmd = "sqlplus -s" & " " & user & "/" & mdp & "@" & dbname
objShell = CreateObject("WScript.Shell")
objScriptExec = objShell.Exec(cmd & " " & "@" & Path_File)
' Previent si erreur
If Err.number <> 0 Then
Messagebox.Show("Ereur", "Ereur")
exit sub
End If
strSqlResults = LCase(objScriptExec.StdOut.ReadLine)
Er = LCase(objScriptExec.stdEr.ReadALL)
' Verifie si le mot error est present
If InStr(strSqlResults, "error") Then
objScriptExec = objShell.Exec("taskkill /F /IM sqlplus.exe")
textBox_result.Text = "Le User ou le MDP n'est pas correct"
Exit Sub
End If
strSqlResults = LCase(objScriptExec.StdOut.ReadAll)
Er = LCase(objScriptExec.stdEr.ReadALL)
' Renseigne le textbox_result avec le resultat de la commande
textBox_result.Text = strSqlResults
' Si le code retour n'est pas vide alors ou active le bouton de telechargement
If strSqlResults <> "" Or Er <> "" Then
button_result.Enabled = true
End If
' Activation du bouton de reinitialisation
button_init.Enabled = true
End Sub
Sub Exec_Requete()
' Permet de ne pas planter si une erreur est rencontrée
On Error Resume Next
' Declaration des variables
Dim objShell As Object
Dim strSqlResults As Object
Dim objScriptExec as Object
Dim ObjetFichierW As StreamWriter
Dim Requete As String
Dim cmd As String
Dim Er As Object
Dim fic As String
Dim fso As Object
' fichier temporaire pour l'executer la requete
fic = "c:\temp.sql"
ObjetFichierW = New StreamWriter(fic, False)
'True pour écrire à la fin et False pour tout effacer et réécrire au début
Requete = textBox_sql.Text & vbCrLf & "commit ;" & vbCrLf & "exit ;"
ObjetFichierW.WriteLine(Requete)
ObjetFichierW.Flush()
ObjetFichierW.Close()
user = comboBox_user.Text
mdp = comboBox_mdp.Text
dbname = comboBox_dbname.Text
cmd = "sqlplus -s" & " " & user & "/" & mdp & "@" & dbname
objShell = CreateObject("WScript.Shell")
objScriptExec = objShell.Exec(cmd & " " & "@" & fic)
If Err.number <> 0 Then
Messagebox.Show("Ereur", "Ereur")
exit sub
End If
strSqlResults = LCase(objScriptExec.StdOut.ReadLine)
Er = LCase(objScriptExec.stdEr.ReadALL)
If InStr(strSqlResults, "error") Then
objScriptExec = objShell.Exec("taskkill /F /IM sqlplus.exe")
textBox_result.Text = "Le User ou le MDP n'est pas correct"
Exit Sub
End If
strSqlResults = LCase(objScriptExec.StdOut.ReadAll)
Er = LCase(objScriptExec.stderr.ReadALL)
' Renseigne le textbox_result avec le resultat de la commande
textBox_result.Text = strSqlResults
' Si le code retour n'est pas vide alors ou active le bouton de telechargement
If strSqlResults <> "" Or Er <> "" Then
button_result.Enabled = true
End If
' Activation du bouton de reinitialisation
button_init.Enabled = True
' Supression du fichier Temp
fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(fic) Then
fso.DeleteFile(fic)
End If
End Sub
Sub Button_resultClick(ByVal sender As Object, ByVal e As EventArgs)
' Declaration des variables
Dim path_log As String
Dim fic_logs As String
Dim hr_logs As String
Dim da_logs As String
Dim StreamLog As String
' Date et Heure pour le nom du fichier de Logs
hr_logs = System.DateTime.Now.Hour & System.DateTime.Now.Minute & System.DateTime.Now.Second
da_logs = System.DateTime.Now.Day & System.DateTime.Now.Month & System.DateTime.Now.Year
' Nom du fichier
fic_logs = hr_logs & "_" & da_logs & "_Logs_SQL.txt"
' Variable du contenu du fichier de log est egal au texte afficher dans le textbox_result
StreamLog = textBox_result.Text
' Si il n'y a pas de message dans la textbox alors pas de telechargement possible
If StreamLog = "" Then
Exit sub
End If
' Ouverture de la fenetre pour enregistrer le fichier de log
folderBrowserDialog_dl.ShowDialog()
' Renseignement de la variable du path du fichier de log avec celui selectionne
path_log = folderBrowserDialog_dl.SelectedPath
' Creation du fichier de log
Dim ObjetFichierW As StreamWriter = New StreamWriter(path_log & "\" & fic_logs, False)
' True pour écrire à la fin et False pour tout effacer et réécrire au début.
' ecriture dans le fichier de log
ObjetFichierW.WriteLine(StreamLog)
ObjetFichierW.Flush()
' fermeture du fichier de log
ObjetFichierW.Close()
End Sub
Sub Button_initClick(ByVal sender As Object, ByVal e As EventArgs)
' Reinitialisation les données au cliquer sur le bouton reinitialisation
textBox_result.Text = ""
textBox_select.Text = ""
textBox_sql.Text = ""
button_exec.Enabled = False
button_result.Enabled = False
button_init.Enabled = False
End Sub
Sub MainFormLoad(ByVal sender As Object, ByVal e As EventArgs)
' Permet de ne pas planter si une erreur est rencontrée
On Error Resume Next
' declaration des variables
Dim fsgen As Object
fsgen = CreateObject("Scripting.FileSystemObject")
' Verifie si le fichier de propriete est present et que le parametre active est a true
If fsgen.FileExists("./" & appconf) And ConfigurationManager.AppSettings("Active") = "true" Then
' Appel des fonctions pour lire le fichier de parametre et ajoute user, mdp et dbname
Call Add_User()
Call Add_Mdp()
Call Add_Dbname()
End If
End Sub
Sub Add_Dbname()
' Permet de ne pas planter si une erreur est rencontrée
On Error Resume Next
' Declaration des variables
Dim i As Integer
Dim x As Integer = 1
i = ConfigurationManager.AppSettings("dbnum")
if i < 1 Or i = Nothing Then
Messagebox.Show("Ereur sur le champ dbnum (ne peut etre inferieur a 1) dans le fichier de configuration" & vbCrLf & vbCrLf & _
"<< Corriger la syntaxe ou desactiver le fichier de configuration >>", "Ereur")
Exit sub
End If
Do While x <> i + 1
comboBox_dbname.Items.Add(ConfigurationManager.AppSettings("dbname" & x))
x = x + 1
If Err.number <> 0 Then
Messagebox.Show("Ereur sur un des champs DBName dans le fichier de configuration" & vbCrLf & vbCrLf & _
"<< Corriger la syntaxe ou desactiver le fichier de configuration >>", "Ereur")
Exit Sub
End If
Loop
' Selectionne la 1ere dbname ajoute
comboBox_dbname.SelectedIndex = 0
End Sub
Sub Add_User()
' Permet de ne pas planter si une erreur est rencontrée
On Error Resume Next
' Declaration des variables
Dim i As Integer
Dim x As Integer = 1
i = ConfigurationManager.AppSettings("usernum")
if i < 1 Or i = Nothing Then
Messagebox.Show("Ereur sur le champ usernum (ne peut etre inferieur a 1) dans le fichier de configuration" & vbCrLf & vbCrLf & _
"<< Corriger la syntaxe ou desactiver le fichier de configuration >>", "Ereur")
Exit sub
End If
Do While x <> i + 1
comboBox_user.Items.Add(ConfigurationManager.AppSettings("user" & x))
x = x + 1
If Err.number <> 0 Then
Messagebox.Show("Ereur sur un des champs User dans le fichier de configuration" & vbCrLf & vbCrLf & _
"<< Corriger la syntaxe ou desactiver le fichier de configuration >>", "Ereur")
Exit Sub
End If
Loop
' Selectionne le 1er user ajoute
comboBox_user.SelectedIndex = 0
End Sub
Sub Add_Mdp()
' Permet de ne pas planter si une erreur est rencontrée
On Error Resume Next
' Declaration des variables
Dim i As Integer
Dim x As Integer = 1
i = ConfigurationManager.AppSettings("mdpnum")
if i < 1 Or i = Nothing Then
Messagebox.Show("Ereur sur le champ mdpnum (ne peut etre inferieur a 1) dans le fichier de configuration" & vbCrLf & vbCrLf & _
"<< Corriger la syntaxe ou desactiver le fichier de configuration >>", "Ereur")
Exit sub
End If
Do While x <> i + 1
comboBox_mdp.Items.Add(ConfigurationManager.AppSettings("mdp" & x))
x = x + 1
If Err.number <> 0 Then
Messagebox.Show("Ereur sur un des champs Mdp dans le fichier de configuration" & vbCrLf & vbCrLf & _
"<< Corriger la syntaxe ou desactiver le fichier de configuration >>", "Ereur")
Exit Sub
End If
Loop
' Selectionne le 1er mdp ajoute
comboBox_mdp.SelectedIndex = 0
End Sub
Sub QuitterToolStripMenuItemClick(ByVal sender As Object, ByVal e As EventArgs)
' Quitte l'application
End
End Sub
Sub AProposToolStripMenuItemClick(ByVal sender As Object, ByVal e As EventArgs)
' Affiche la fenetre a propos de ...
Form1.show
End Sub
Sub AideToolStripMenuItem1Click(ByVal sender As Object, ByVal e As EventArgs)
' Affiche la fenetre de l'aide ...
Form2.show
End Sub
End Class
Voir le Zip
Conclusion :
Pour Excuter vos requetes, plus besoin de lancer toad, sqldeveloper, ..., plus besoin de taper la ligne de commande sqlplus dans cmd, putty, ou ... l'appli automatise tout ca avec une gestion des erreurs très poussé.
Pour ceux à qui cela pourrait etre utile.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.