OVH Cloud OVH Cloud

identifier la connexion

2 réponses
Avatar
eneir
Bonjour,

J'ai un problème pouvez vous m'aidez?

J'accède à une base de données sous SQL Server.
L'accès se fait par des pilotes jdbc. Et j'utilise des scripts jsp.

Le problème c'est que je doit identifier au début le type de la connexion (un
administrateur ou un utilisateur).
J'ai découvert une requête en SQL Server:

IS_SRVROLEMEMBER ('dbcreator')
Elle retourne 1 si la connexion courante est celle d'un dbcreator, et 0 sinon.
(Rq:Seul mon administrateur de SQL Server est un dbcreator!).

Avec l'analyseur des requêtes, cette commande marche parfaitement:
IF (IS_SRVROLEMEMBER ('dbcreator')=1) print 'ok'

Mais je doit exécuter cette commande depuis les .java. C'est à ce niveau que le
problème apparait.

Voici mon code:

public boolean IdentifierConnectionServeur()
{
boolean retour=false;

retour=executeRequeteUser("IF (IS_SRVROLEMEMBER ('dbcreator'))=1");

return retour;
}

où executeRequeteUser est:

public boolean executeRequeteUser(String query)
{
boolean retour=false;

try{
this.myStatement = this.myConnection.createStatement();
retour =this.myStatement.execute(query);

System.out.println("?????Reuissi"+retour);

} catch (java.lang.Throwable e) {
System.out.println(e.toString());

System.out.println("?????Echec"+retour);
return retour;
}
return retour;
}

Au niveau du JSP, je fait le test suivant:

// connection à la base de données

if(ConnexionAdminId.IdentifierConnectionServeur()==true)
{//ConnexionAdminId est un objet de la classe bean

System.out.println("C'est un administrateur");//affichage au nivau du serveur

}

else
{

System.out.println("C'est un simple utilisateur");

}

Résultats:

**echec de l'exécution de la ligne: this.myStatement.execute(query);

**L'exception est générée:
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Ligne 1 :
Syntaxe incorrecte vers '1'.

**La valeur de retour est égale à false

Quel est le problème ci dessus?
y'a-t-il une autre méthode que execute que je peux utiliser?

Merci et A+,
--
Ce message a été posté via la plateforme Web club-Internet.fr
This message has been posted by the Web platform club-Internet.fr

http://forums.club-internet.fr/

2 réponses

Avatar
jerome moliere
eneir wrote:

Bonjour,

J'ai un problème pouvez vous m'aidez?

J'accède à une base de données sous SQL Server.
L'accès se fait par des pilotes jdbc. Et j'utilise des scripts jsp.

Le problème c'est que je doit identifier au début le type de la connexion (un
administrateur ou un utilisateur).
au debut de quoi ?

de ton script JSP c'est cela ?
je ne comprends pas quelque chose si tu ne sais pas sous quel login tu
fais ta requete, qui peut le savoir ?
as tu regarde JAAS pour sortir de ton code cette phase
d'authentification qui n'est pas liée directement à ton appli
J'ai découvert une requête en SQL Server:

IS_SRVROLEMEMBER ('dbcreator')
Elle retourne 1 si la connexion courante est celle d'un dbcreator, et 0 sinon.
(Rq:Seul mon administrateur de SQL Server est un dbcreator!).

Avec l'analyseur des requêtes, cette commande marche parfaitement:
IF (IS_SRVROLEMEMBER ('dbcreator')=1) print 'ok'
c'est du specifique SQL SERVER non?

portabilité pas geniale (nulle même)
Jerome

Avatar
Libert Sébastien
Hello !

As-tu essayé d'exécuter la requête sans la condition :

stmt.execute ("IS_SRVROLEMEMBER ('dbcreator')");


Sinon, vérifie dans la documentation de ton driver JDBC s'il est capable
d'exécuter ce genre d'instructions.


HTH
Sébastien.