J'essaie Scalaquery, c'est vraiment incroyable. Je pourrais défini la table de base de données à l'aide de la classe Scala et la questionner facilement.
Mais j'aimerais savoir, dans le code suivant, comment puis-je vérifier si une table est existez, donc je n'appellerai pas 'table.ddl .Create 'deux fois et obtenez une exception lorsque j'exécute ce programme deux fois? P>
object Users extends Table[(Int, String, String)]("Users") { def id = column[Int]("id") def first = column[String]("first") def last = column[String]("last") def * = id ~ first ~ last } object Main { val database = Database.forURL("jdbc:sqlite:sample.db", driver = "org.sqlite.JDBC") def main(args: Array[String]) { database withSession { // How could I know table Users is alrady in the DB? if ( ??? ) { Users.ddl.create } } } }
6 Réponses :
avec java.sql.databasemetadata code> (interface). Selon votre base de données, plus ou moins de fonctions peuvent être mises en œuvre. p>
Donc, je suppose qu'il n'y a pas de solution scalaquery pourrait faire cela?
Je ne trouve rien, et de ce que j'ai trouvé ( l'utilisateur étend le tableau [(tuple de types)] code>), je suppose que l'objectif est d'utiliser la typing anticipé. Je ne vois pas comment vous pouvez vous aider à intégrer vous-même des tables définies dynamiques vous-même, mais je n'ai pas utilisé de réflexion souvent, alors peut-être qu'il y a un moyen, et je ne peux tout simplement pas le voir. La documentation est un peu maigre. Il existe des
méta code> -Classes, mais je n'ai pas trouvé d'exemples comment les utiliser dans le wiki ou le blog. :)
Je ne trouve rien non plus. Donc, je suppose que c'est la réponse. Et juste une note, la session # des métadonnées pourrait obtenir le java.sq.databasemetatata de la session de base de données actuelle.
Scalaquery Version 0.9.4 comprend un certain nombre de classes d'emballage de métadonnées SQL utiles dans le paquet Org.ScalAQuery.Meta, telle que MTABLE:
Merci pour ce post! C'est un excellent moyen de faire une bootstrap asynchrone sur la pièce! Cadre ( Playframework.org/documentation/1.2.4/jobs ). À votre santé,
Voici une solution complète qui vérifie l'application Démarrer à l'aide d'un DB PostgreSQL pour Playframework
Ce fil est un peu vieux, mais peut-être que quelqu'un trouvera cela utile. Tous mes DAOS incluent ceci:
Merci, c'est génial. Fonctionne avec slick 2.1.x
Voir aussi la discussion liée ici. Je préfère personnellement la suggestion de Hezamu et l'étendre comme suit pour le garder au sec: alors vous pouvez simplement créer vos tables avec la session implicite: p>
Vous pouvez définir dans votre DAO impliquer la méthode suivante (prise de SLICK MTABLABLE.GETTABLE échoue toujours avec une exception inattendue [JDBCSQXException: Valeur non valide 7 pour le paramètre Colonnierex [90008-60]] ) qui vous donne un true O FALSE Selon une table définie dans votre DB:
import slick.jdbc.meta._