Vous pouvez générer du code pureQuery à partir d'une unique instruction SQL.
L'instruction peut être une chaîne SQL en code Java,
un script SQL contenant une unique instruction SQL, ou une partie de script SQL.
Pourquoi et quand exécuter cette tâche
Vous pouvez travailler avec des scripts SQL relevant soit de projets
Java compatibles pureQuery dans la perspective
Java, soit de projets de développement de données
dans la perspective Développement de routine et de code SQL. Vous pouvez également travailler avec des scripts qui sont
ouverts dans l'éditeur SQL et XQuery.
Vous pouvez utiliser
ce processus pour générer du code pureQuery applicable exclusivement à des instructions
SELECT, INSERT, UPDATE, DELETE ou CALL valides. Si une méthode JDBC prepareStatement()
de l'instruction SQL génère des erreurs, une boîte de message affiche le
message d'erreur renvoyé.
Si vous
souhaitez générer du code à partir de plusieurs instructions SQL, voir Génération de code pureQuery à partir de plusieurs instructions SQL.
Procédure
Pour
générer du code pureQuery à partir d'une unique instruction SQL :
- Ouvrez l'assistant Génération de code pureQuery à partir d'une instruction
SQL en suivant l'une des méthodes ci-après :
Option |
Description |
Pour une chaîne SQL en code Java : |
- Passez dans la perspective Java.
- Ouvrez le fichier .java file qui contient la chaîne SQL dans l'éditeur Java.
- Dans l'éditeur, placez le curseur sur le StringLiteral d'une instruction SELECT, INSERT, UPDATE, DELETE ou CALL,
cliquez avec le bouton droit de la souris puis sélectionnez Générer le code pureQuery.
Si c'est l'assistant Génération du code pureQuery à partir d'une table qui s'ouvre, c'est que le curseur texte n'a pas été placé soit sur un StringLiteral, soit sur l'un des types spécifiques d'instruction SQL.
|
Pour une instruction SQL contenue dans un script SQL ouvert avec l'éditeur SQL et XQuery : |
- Dans l'éditeur, sélectionnez une instruction SELECT, INSERT, UPDATE, DELETE ou CALL complète.
- Cliquez sur cette instruction avec le bouton droit de la souris puis sélectionnez Générer le code pureQuery.
|
Pour une instruction SQL contenue dans un script SQL relevant d'un projet Java compatible pureQuery : |
- Passez dans la perspective Java.
- Cliquez avec le bouton droit de la souris sur le fichier .sql contenant l'instruction
SQL unique SELECT, INSERT, UPDATE, DELETE ou CALL, puis sélectionnez Générer
le code pureQuery.
|
Pour une instruction SQL contenue dans un script SQL relevant d'un projet de
développement de données : |
- Basculez vers la perspective Développement de routine et de code SQL.
- Développez le dossier Scripts SQL dans le projet.
- Cliquez avec le bouton droit de la souris sur le script contenant l'instruction SQL unique SELECT, INSERT, UPDATE,
DELETE ou CALL, puis sélectionnez Générer le code pureQuery.
|
Si l'assistant ne s'ouvre pas et si une boîte de message apparaît, étudiez le message d'erreur affiché afin
de déterminer pourquoi l'instruction SQL n'est pas valide.
- Suivez les étapes de l'assistant. Pour afficher des informations sur les différentes zones de l'assistant, appuyez sur F1.
- Cliquez sur Terminer pour générer les fichiers que vous avez spécifiés.
Résultats
Lorsque vous générez du code pureQuery,
le plan de travail crée un bean que vous pouvez utiliser pour accéder à votre
base de données. Par exemple, vous pouvez générer du code à partir d'une instruction UPDATE ou d'une instruction SELECT. Lorsque vous générez
du code à partir d'une instruction SELECT, le plan de travail crée un bean que vous pouvez utiliser
pour conserver les résultats de la requête.
Si vous n'utilisez pas de clauses AS dans les instructions SELECT
qui produisent des jointures ou des unions, ou qui contiennent des colonnes résultantes,
les résultats de la requête peuvent contenir des colonnes dont le nom n'est pas unique. La capacité du plan de travail à résoudre cet incident lors de la génération d'un bean pour représenter les résultats de la requête dépend du type de base de données utilisé par votre application.
- DB2 for Linux, UNIX,
and Windows ; DB2 for z/OS ; Informix Dynamic Server : le
plan de travail utilise l'annotation @Column sur les propriétés associées aux colonnes portant le même nom qu'une ou plusieurs autres colonnes.
Par exemple, si votre application exécute la simple requête suivante :
select a.col1, b.col1 from a, b where a.id=b.id;
les méthodes
set() pour les propriétés correspondantes dans les beans contenant les résultats de requête doivent inclure des annotations
@Column indiquant le nom de la table dans laquelle apparaissent les deux colonnes
id :
public class JoinExample{
private int a_id;
private int b_id;
@Column (name="id", table="a")
public void setA_id (int a_id)
{
this.a_id = a_id;
}
public int getA_id ()
{
return a_id;
}
@Column (name="id", table="b")
public void setB_id (int b_id)
{
this.b_id = b_id;
}
public int getB_id ()
{
return b_id;
}
}
- Oracle : le plan de travail n'utilise pas l'attribut table de l'annotation @Column pour mapper les colonnes problématiques aux propriétés du bean. Vous devez utiliser l'une des méthodes suivantes pour les mapper :
- Utilisez
la clause AS de l'instruction SELECT pour affecter des noms uniques
aux colonnes dans les résultats de la requête.
- Utilisez une classe RowHandler pouvant être utilisée
avec les colonnes des résultats de la requête par
leur numéro d'index plutôt que par leur nom. Voir L'interface RowHandler <ROW>.