retirer requete SQL en Lotus Script

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

retirer requete SQL en Lotus Script

Messagepar Michael DELIQUE » 14 Sep 2010 à 19:03

Bonjour

je cherche un moyen de retirer d'une chaine toute requete sql y figurant. et bien sur sans passer par un regex et en lotus script.

le probleme n'est pas de détecter un début de requete, mais ça fin !
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar roubech » 14 Sep 2010 à 20:11

t'es en train de blinder une appli web ? nb tentatives, modifier une ressource, retirer le code html, retirer les requetes ... t'as peur que quelqu'un saisisse du code dans un formulaire web et arrive à le faire exécuter sur ton serveur pour le peter ?
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar Michael DELIQUE » 14 Sep 2010 à 20:16

ben oui !

je dois me pencher sur cette problématique
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar Michael DELIQUE » 17 Sep 2010 à 15:44

up !?
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar mike76 » 17 Sep 2010 à 16:18

salut,

je ne vois pas trop comment faire pour détecter la fin d'une requête

au pire tu ne peux pas remplacer les intructions SELECT, UPDATE, INSERT, ... par une chaîne vide comme ça la requête ne s'exécutera pas

je ne sais pas ce que tu en penses
mike76
V.I.P.
V.I.P.
 
Message(s) : 2122
Inscrit(e) le : 12 Oct 2006 à 13:14
Localisation : ROUEN

Messagepar Michael DELIQUE » 17 Sep 2010 à 16:22

re,

j'ai pensé à ça

et aussi a un truc un peu plus sioux

je vire tout entre le select et le from ou entre le insert et le values et puis tout ce qui est avant la ) et le values.
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar mike76 » 17 Sep 2010 à 16:24

c'est vrai que cette solution n'est pas super géniale, mais je ne vois pas comment tu pourrais faire autrement
bon week-end
mike76
V.I.P.
V.I.P.
 
Message(s) : 2122
Inscrit(e) le : 12 Oct 2006 à 13:14
Localisation : ROUEN

Messagepar Michael DELIQUE » 17 Sep 2010 à 17:11

grosso modo ça donne ça

Code : Tout sélectionner
Function SQLRemoveRequest(Chaine As String) As String
   
   Dim i As Integer
   Dim j As Integer
   
   SQLRemoveRequest = Chaine
   
   If Instr(Ucase(SQLRemoveRequest),"CREATE DATABASE") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"CREATE DATABASE","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"COMMIT") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"COMMIT","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"ROLLBACK") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"ROLLBACK","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"CREATE INDEX") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"CREATE INDEX","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"TRUNCATE TABLE") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"TRUNCATE TABLE","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"ALTER COLUMN") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"ALTER COLUMN","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"DROP COLUMN") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"DROP COLUMN","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"DROP TABLE") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"DROP TABLE","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"MODIFY") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"MODIFY","",,,1)
   End If
   
   While Instr(Ucase(SQLRemoveRequest),"SELECT") > 0
      i = Instr(Ucase(SQLRemoveRequest),"SELECT")
      j = Instr(Ucase(SQLRemoveRequest),"FROM")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"SELECT","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+4))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"CREATE TABLE") > 0
      i = Instr(Ucase(SQLRemoveRequest),"CREATE TABLE")
      j = Instr(Ucase(SQLRemoveRequest),")")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"CREATE TABLE","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+1))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"ALTER TABLE") > 0
      i = Instr(Ucase(SQLRemoveRequest),"ALTER TABLE")
      j = Instr(Ucase(SQLRemoveRequest),"ADD")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"ALTER TABLE","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+3))
      End If      
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"CUSTOMER") > 0
      i = Instr(Ucase(SQLRemoveRequest),"CUSTOMER")
      j = Instr(Ucase(SQLRemoveRequest),")")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"CUSTOMER","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+1))
      End If      
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"CREATE VIEW") > 0
      i = Instr(Ucase(SQLRemoveRequest),"CREATE VIEW")
      j = Instr(Ucase(SQLRemoveRequest),"FROM")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"CREATE VIEW","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+4))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"INSERT INTO") > 0
      i = Instr(Ucase(SQLRemoveRequest),"INSERT INTO")
      j = Instr(Ucase(SQLRemoveRequest),"VALUES")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"INSERT INTO","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+1))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"UPDATE") > 0
      i = Instr(Ucase(SQLRemoveRequest),"UPDATE")
      j = Instr(Ucase(SQLRemoveRequest),"WHERE")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"UPDATE","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+5))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"DELETE FROM") > 0
      i = Instr(Ucase(SQLRemoveRequest),"DELETE FROM")
      j = Instr(Ucase(SQLRemoveRequest),"WHERE")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"DELETE FROM","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+5))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"RENAME TABLE") > 0
      i = Instr(Ucase(SQLRemoveRequest),"RENAME TABLE")
      j = Instr(Ucase(SQLRemoveRequest),"TO")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"RENAME TABLE","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+2))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"COMMENT") > 0
      i = Instr(Ucase(SQLRemoveRequest),"COMMENT")
      j = Instr(Ucase(SQLRemoveRequest),"IS")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"COMMENT","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+2))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"GRANT") > 0
      i = Instr(Ucase(SQLRemoveRequest),"GRANT")
      j = Instr(Ucase(SQLRemoveRequest),"IS")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"GRANT","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+5))
      End If
   Wend
   
End Function
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy


Retour vers Développement