begin process at 2012 02 17 10:32:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de Donnees

 > EXECUTEUR DE REQUETE SQL (ORIENTÉ ORACLE)

EXECUTEUR DE REQUETE SQL (ORIENTÉ ORACLE)


 Information sur la source

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de Donnees Classé sous :Requete, SQL, Oracle, Executeur, Execution Niveau :Débutant Date de création :04/12/2008 Vu / téléchargé :6 063 / 466

Auteur : denpx

Ecrire un message privé
Site perso
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) VALIDEUR DE FICHIER XML XSD
Source avec Zip Source avec une capture Source .NET (Dotnet) GÉNÉRATEUR DE FICHIER
Source avec Zip Source avec une capture Source .NET (Dotnet) COMPTE À REBOUR

 Sources de la même categorie

Source avec Zip Source avec une capture BIEN ADMINISTRER LES ETUDIANTS ET LEURS CÔTES par okosa
Source avec Zip VBA EXEL GESTION DE PERSONEL NOUVEAU CONTRAT DE TRAVAI par oudlarbi
Source avec Zip Source avec une capture CREATION D'UN OBJET D'ACCÈS AUX DONNÉES par okosa
Source avec Zip Source .NET (Dotnet) MISAHORAIRE par MdelM
Source avec Zip Source avec une capture BASEDEDONNEES,GESTIONDEMALADES,DATABASSE par shadkitenge

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) UTILISATION DE SQLITE AVEC UNE CLASSE DE CONNECTION par lucdr
Source avec Zip Source avec une capture INTEGRER UN SIMPLE ÉDITEUR POUR EXPRESSIONS SQL DANS VOS PRO... par chaibat05
Source .NET (Dotnet) CONNEXION ET REQUETES SQL SERVER AVEC VB.NET par DarkCid
Source avec Zip REQUETEUR UNIVERSEL par djls
Source avec Zip Source avec une capture REQUÊTES SQL SIMPLES ET PRATIQUES POUR DÉBUTANTS par kewan

Commentaires et avis

Commentaire de tead002 le 09/05/2009 06:39:30 6/10

bonjour

je n'arrive pas a exécuter le programme car je n'ai pas sql plus et Tns ping, je voulez savoir si vous avez un lien où je peux télécharger directement pour pouvoir utiliser le programme

merci encore

 Ajouter un commentaire


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&nbsp;ne provoque pas&nbsp;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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,654 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales