La création d'une nouvelle base de données locale avec Java
Mon but est de créer une base de données locale qui peut être lu et écrit en Java. J'ai une certaine expérience avec la manipulation d'un local de base de données sqlite avec Python, et à interagir avec les bases de données en réseau existant sur Microsoft Azure via VB.Net mais le Java formulation pour la création d'une base de données s'échappe de moi.
La plupart des sources (comme le JDBC Docs) semblent partir du principe que vous accédez à une base de données via un protocole réseau, ou une base de données hébergée sur localhost. Mon choix de la mise en œuvre est de créer et de stocker la base de données dans un fichier (ou un ensemble de fichiers), de sorte qu'il peut être stockées et accessibles localement, sans connectivité réseau (présumable par le biais de la "fichier:" protocole).
La JDBC Tutoriel ressemble, il sera très utile une fois que je suis en place et en cours d'exécution, mais est actuellement au-delà de ma portée, puisque je n'ai même pas une base de données existante encore.
De nombreux sources ont suggéré des solutions telles que H2, MySQL, Derby, ou Hypersonique DB. Cependant, je suis réticent à installer des extensions (si c'est le bon terme) pour un certain nombre de raisons:
- Ce projet est initialement prévu pour m'aider à apprendre mon chemin autour de Java - élargissement de la portée du projet va diluer mon expérience avec la langue de "base" et, probablement, d'accroître la tentation de s'engager dans le "culte du cargo de programmation"
- Si ce projet n'a jamais distribué à d'autres utilisateurs (certes peu probable, mais quand même!), Je ne veux pas les forcer à l'installation de plus que le noyau de Java.
- Je ne sais pas comment installer des extensions (add-ons? les modules?) en Java - un bébé-étape à la fois!
Pour des raisons similaires, l'installation de Microsoft SQL Server ne serait pas productif.
Cette réponse semble proche de ce que je vise; cependant, il donne l'erreur:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/?user=root&password=rootpassword
et essayant "jdbc:file://targetFile.sql" donne une erreur similaire.
J'ai vu le terme "intégré" de la base de données, ce qui je pense est un sous-ensemble de la "base de données locale" (c'est à dire une base de données locale est stocké sur le même système intégré de base de données est une base de données locale qui n'est utilisé que par une seule application) - si j'ai ces définitions erronées, n'hésitez pas à me corriger!
- H2 est très puissant et c'est un simple bocal
- Qu'entendez-vous par "installer les extensions"? Qu'est-ce précisément voulez-vous si ce n'est une base de données? Il n'existe pas de base de données dans la base de Java; Java de noyau est juste de base de Java. Lorsque vous distribuez votre projet, vous pouvez distribuer ce que vous voulez avec elle, y compris une pure Java DB comme H2 et Derby, et ils n'ont pas à faire quoi que ce soit. Vous ne voulez intégré DB, mais je voudrais offrir à vos utilisateurs la possibilité d'utiliser un arbitraire DB, ce qui est le JDBC permet de le faire.
- Je recommanderais à un en mémoire DB comme H2 qui est capable de cache sur disque lorsque la JVM sorties: stackoverflow.com/questions/1932254/in-memory-java-db
- ce que je voulais dire par "installer les extensions" (qui je le reconnais est probablement le mauvais terminologie), c'est que je ne veux pas que quelqu'un d'autre en utilisant le système soit nécessaire de télécharger ou d'installer quoi que ce soit d'autre. Je ne savais pas que c'était possible de distribuer du code supplémentaire avec votre propre merci!
Vous devez vous connecter pour publier un commentaire.
Très probablement, la raison pour laquelle vous obtenez l'erreur est due au fait que vous n'êtes pas l'enregistrement du pilote (à l'aide de la réflexion...) avant de l'utiliser pour établir une connexion, et ainsi de suite.
Sans doute que vous voulez faire quelque chose le long des lignes de
Class.forName("driver")
puis appliquer si nécessaire, puis l'enregistrer dans le DriverManager avant l'appel de la
getConnection()
méthode.Voici un lien utile qui peut vous aider dans la résolution de la question:
http://www.kfu.com/~nsayer/Java/dyn-jdbc.html
Toutefois, si vous voulez vraiment utiliser une base de données locale/fichier vous pouvez avoir un coup d'oeil à SQLite, qui pourrait être une façon d'aller à ce sujet, bien que je recommande d'aller pour le MySQL approche, car il est beaucoup plus facile à configurer et à apprendre comment ça marche avec JDBC.
Si vous considérez toujours SQLite check this out:
Java et SQLite
Je vois vous avez besoin de conseils dans l'importation externe .les fichiers jar dans votre code (3e partie des bibliothèques comme celles que vous allez utiliser pour un pilote JDBC). Êtes-vous à l'aide d'un IDE (par exemple, Eclipse, Netbeans, etc.) ou êtes-vous écrit dans un éditeur de texte et de compiler manuellement?
java.lang.ClassNotFoundException: org.h2.Driver
Un certain nombre de incorporés pur Java bases de données est apparu récemment, qui ont vraiment une interface simple, généralement juste
java.util.Map
, ne concernent pas l'aide de JDBC SQL ou d'autres artefacts, et de stocker leurs données dans un seul fichier ou un répertoire:Le principal inconvénient est que la plupart de ces bases de données fournissent seulement les simples clé-valeur de modèle.
DBC peut être utilisé avec n'importe quel base de données qui dispose d'un pilote JDBC, ce qui n'est pas nécessairement une base de données en "mode réseau", il peut être utilisé avec des bases de données ainsi.
Voici quelques Java et intégrable de bases de données:
http://www.h2database.com/html/main.html
http://db.apache.org/derby/
http://hsqldb.org/
De Java JDK n'inclut pas la mise en œuvre d'une base de données, ni les pilotes pour y accéder. Il fournit seulement JDBC comme une abstraction pour se connecter à une "base de données". Est à vous d'inclure toutes les bibliothèques nécessaires dans votre code.
Si vous voulez avoir une code vous pouvez simplement inclure la .jar fichier d'une base de données intégrable dans vous classpath. De cette façon, vous pouvez créer l'instance de la base de données dans votre code et de minimiser les dépendances externes.
Vous pouvez trouver ici une liste de java intégrable de bases de données
Vous pouvez trouver ici un exemple de la façon d'intégrer HSQLDB dans votre code.