Accueil > > > EXECUTEUR DE REQUETE SQL (ORIENTÉ ORACLE)
EXECUTEUR DE REQUETE SQL (ORIENTÉ ORACLE)
Information sur la source
Description
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
-
- ' 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
' 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.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
probleme lors de l'execution de requetes SQL [ par Dev77 ]
Salut,Voilà mon pb : lorsque que j'execute une requete SQL vers un serveur DB2 distant (NT ou Mainframe IBM), je ne peux plus avoir la main sur l'appl
requete sql avec oracle [ par pouppy ]
Salut à tousje n'arrive pas a exécuter une requéte SQL avec une base oracle
probleme execution requete sql de mise a jour [ par stephG01 ]
bonjourdans un projet access, l'execution de la requete ne met pas a jour mon enregistrement, mais ne provoque pas d'erreur.Voici le code en
execution de requete [ par torNADoS ]
salut, voila j ai un petit probleme au niveau de l'execution des requetes.j ai deux fonctions porteusent de requetes la premiere est [code]Me.Commande
vb.net avec requete sql [ par chrisgreg ]
Bonjour,j'utilise vb.net (version 2005)j'envoie des requetes sql pour taper une table sous oracle. Pas de souci, j'ai les resultats attendus,par contr
Execution Requete VBA [ par DeWaRs ]
Salut a tous, J'essaie d'executer une requete sur un serveur sql express 2005, mais j'ai un message d'erreur sql : "424 : object required" Dim requet
Requete suppression des doublons VB6/SQL [ par chefinf ]
Svp, je veux savoir comment creer une requete SQL qui supprime seulement les red<span lang="FR" style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'
vb6+sql [ par ingstat ]
Slt,Je n arrive pas a ranger dans un tableau le resultat de ma requete SELECT ...Est ce possible? Pouvez vous me donner un exemple permettant de recup
mettre un resultat d'une requete sql dans une variable avec delphi [ par mimazina ]
Bonjour,Je vous prie de me montrer comment je peux affecter un résultat d'une requête SQL à une variable.ADOQuery1.SQL.Add('select cptmiles from adhe
Recuperation message généré par SQL serveur [ par fe90154 ]
Bonjour,Je voudrais récuperer les messages (message de confirmation d'ajout/modification de lignes dans la base de données ou message d'erreur) génér
|
Derniers Blogs
ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|