Comment créer par programmation Java jeu de résultats à partir de données personnalisé avec les pas de base de données
J'ai le code existant qui accepte un java.sql.ResultSet
qui contient des informations extraites d'une base de données Oracle. Je voudrais maintenant à réutiliser ce code, mais j'aimerais passer à un ResultSet
objet que je crée moi même à partir des données de la mémoire qui n'est affiliée à aucune base de données. Est-il un framework Java de la classe que je peux utiliser pour cela? ResultSet
a des tonnes de méthodes, de sorte que la mise en œuvre de ma propre classe pour ce qui semblait avoir exagéré, même si je ne pouvais ignorer la plupart des méthodes pour mon cas précis.
Je pensais à quelque chose le long des lignes de l'ancien Microsoft objet ADO recordset, où j'ai pu créer les champs, puis de renseigner la ligne de données pour chaque champ. Ce qui semblait une facilement googlable question, mais j'ai été incapable de trouver une bonne pointeurs.
- Qu'est-ce que
java.sql.ResultData
? - Heh. Merci.. Même après relecture, j'ai bêtement appelé
ResultData
au lieu deResultSet
... retour à l'édition de maintenant! - Cela pourrait vous aider: stackoverflow.com/questions/878848/...
Vous devez vous connecter pour publier un commentaire.
AbstractResultSet
de la classe, celui qui (comme AbstractQueue) implémente toutes les méthodes en jetant UnsupportedOperationException (Eclipse autogenerates ces méthodes en une fraction de seconde).AbstractResultSet
. La sous-classe peut remplacer seulement les méthodes que vous êtes intéressé à mettre en place.throw
états, et la mise en œuvre définitive de la classe peut contenir n'a de sens que code.C'est un peu à gauche du champ de la solution, mais vous pourriez faire usage d'un moqueur de cadre (par exemple,JMock). Ces cadres sont généralement destiné à la création de maquette implémentations d'interfaces pour unité de test, mais je ne vois aucune raison pourquoi vous pouvez utiliser pour créer une "mise en œuvre partielle" de
java.sql.ResultSet
.Par exemple, disons que vous avez voulu seulement mettre en œuvre les
getString()
méthode, et rien d'autre:Peu orthodoxe, et assez lourd, mais il devrait fonctionner
Vous pouvez prendre un coup d'oeil à la CachedRowSet interface:
http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/rowset/CachedRowSet.html
qui vous permet de travailler en mode déconnecté.
java.sql.Jeu de résultats est une interface, de sorte que vous pouvez créer votre propre classe qui implémente cette interface.
Ma première option serait de refactoriser le code afin qu'il prenne une Liste<Map<String,Object>> ou quelque chose d'approprié (qui est, Liste<Map<String,Object>> si les données déplacées autour de a pas de véritable structure ou entièrement les objets de type, s'il dispose de la structure).
Si ce n'est pas possible ou efficace du temps, le "fun" hack une requête à un en mémoire H2 base de données pour obtenir un jeu de résultats. Si vous ne trouvez pas raisonnable de stub pour ResultSet vous pouvez facilement instancier, il pourrait être plus rapide que le roulement de votre propre (tirez sur le bocal dans, écrire 20 lignes de code pour la création de la db et du remplissage d'un tableau).
Je n'ai pas l'habitude de répondre à java questions, car je ne suis pas un développeur java, mais cela semble être une architecture défaut si vous avez besoin de créer un sql de l'objet à partir de code à passer dans une méthode pour recycler une méthode. Je pense que vous voulez faire de votre méthode de réception accepter une autre forme spécifique de l'entrée (comme une mesure de l'objet array) pour le rendre réutilisable, et ensuite d'analyser votre ResultData dans ce format.