Frage an netbeans, java, derby, database-connection – Herstellen einer Verbindung zu einer dateibasierten Derby-Datenbank

6

Ich möchte mit einer dateibasierten Datenbank mit Apache Derby arbeiten. Ich habe mich gefragt, ob jemand festlegen kann, wie diese Datenbank mit Netbeans als IDE verbunden und erstellt werden soll. Ich habe Derby-Handbücher durchgesehen, um dies herauszufinden, aber alles, was ich bekam, war "Embedded Derby JDBC Database Connection", von dem ich erfuhr, dass es sich nicht um einen dateibasierten Ansatz handelt, und in beiden Fällen schien die Verbindung nicht zu funktionieren. Jede Hilfe wäre sehr dankbar

Ich denke, die "Embedded Derby JDBC DB-Verbindung" ist die Lösung, die Sie suchen. Ich antwortete unten und beschrieb, wie die aktuelle NetBeans IDE-Benutzeroberfläche zum Manipulieren von Derby verwendet wird. In beiden Fällen werden Ihre Daten möglicherweise in einer Datei gespeichert. Der Hauptunterschied besteht darin, ob Sie die eingebettete Route oder die Client-Server-Route auswählen, bei der die Client-Server-Route einen Port auf dem Host-Betriebssystem erfordert, über den mehrere Clients gleichzeitig auf die Datenbank zugreifen können. simgineer

Deine Antwort

4   die antwort
0

sollten Sie herunterladen,Derby

Entpacke die Datei. Führen Sie startNetworkServer.bat im bin-Verzeichnis aus. Derby-Server wird gestartet und Port 1527 abgehört.

Jetzt in deinem Java Code:

DriverName = org.apache.derby.jdbc.ClientDriver

ConnectionString = jdbc: derby: // localhost: 1527 / schemaname; create = true

Darüber hinaus können Sie die Derby-Datenbank auch abfragen, wie wir es in Oracle tun.

Führen Sie ij.bat aus, das sich im bin-Verzeichnis befindet. dann an der Eingabeaufforderung:

connect 'Verbindungs-URL hier angeben'

und Sie können die SQL-Abfragen wie die Oracle-Eingabeaufforderung auslösen.

Wenn Sie den Derby-Server an einem anderen Port ausführen möchten, führen Sie den folgenden Befehl bei cmd aus:

startnetworkserver.bat -p 1234

2

den Sie verwenden möchten, der eingebettete Treiber in derby.jar. Anstatt mich mit der "Codierungsseite" zu befassen, da es genügend Beispiele gibt, verwende ich Netbeans lieber selbst, um alles zu erledigen, bevor ich mit der Codierung beginne.

Da ich den eingebetteten Ansatz verwende, um wireshark / tcpdump / nmap-Dateien in Datenbankeinträge zu konvertieren, verwende ich einen etwas anderen Ansatz.

Da ich die neuesten stabilen Versionen von Derby anstelle der installierten Version bevorzuge, habe ich einen etwas anderen Ansatz, der es mir ermöglicht, die von mir gewünschte Version zu verwenden und die Datenbank in ein AR / W-Datenverzeichnis zu stellen, wo immer ich möchte System.

Erstellen Sie: mkdir -p $ HOME / opt / derby und cd ~ / opt / derby.Lade die neueste Version von db.apache.org herunter und entpacke sie in $ HOME / opt / derby /Erstellen Sie die symbolische Verknüpfung: ln -spwd/Ausführung pwd/neueste.Erstellen Sie die symbolische Verknüpfung: ln -spwd/neuestepwdStartup-Netbeans.

Ab hier können Sie alles in Netbeans tun:

Erstellen Sie eine Ameisenbibliothek und nennen Sie sie "ASF-Derby-Emb.": Extras-> Ameisenbibliotheken-> Neue Bibliothek.Stellen Sie im Einstellungsfenster den Klassenpfad auf /home/[loginid[/opt/derby/default/lib/derby.jar ein und fügen Sie optional die Datei derbytools.jar hinzu.Klicken Sie auf die Registerkarte "Quelle" und fügen Sie sie in den Pfad zum Quellcode ein, wenn Sie ihn heruntergeladen haben.Klicken Sie auf die Registerkarte javadoc und dann auf / home / [loginid] / opt / derby / default / javadocs

Wenn Sie sich mit dem Codieren befassen, fügen Sie es einfach in die ASF-Derby-Emb-Bibliothek ein und es wird automatisch in Ihre 'dist' kopiert.

Richten Sie nun die JavaDB ein.

Richten Sie die Registerkarte Dienste ein: Fenster-> Dienste und wählen Sie diese Registerkarte aus.Wählen Sie JavaDB aus, klicken Sie mit der rechten Maustaste und stoppen Sie die möglicherweise ausgeführte JavaDB.Wählen Sie JavaDB und klicken Sie mit der rechten Maustaste auf den Menüeintrag Eigenschaften, um einen Eigenschaftendialog aufzurufen.Navigieren Sie zum JavaDB-Installationsverzeichnis: in $ HOME / opt / derby / default.Behalten Sie entweder den aktuellen Speicherort des Datenbankinstallationsverzeichnisses bei oder navigieren Sie zu dem Verzeichnis, in dem Sie es ablegen möchten, stellen Sie jedoch sicher, dass Sie über Lese- / Schreibzugriff verfügen.Klicken Sie auf "OK". Nun haben Sie eine andere JavaDB-Installation und einen anderen Datenbankspeicherort.

Durch einfaches Ändern des Datenbankspeichers können Sie eine Datenbank beliebig platzieren. Oder Sie können das Gleiche im Code erreichen, wie die URL lautet: jdbc: derby: //Datenbankverzeichnis.

Auf jeden Fall kann ich jetzt meine Datenbank einrichten.

Wählen Sie JavaDB und klicken Sie mit der rechten Maustaste und wählen Sie "Datenbank erstellen". Füllen Sie einfach den Dialog aus, und die Datenbank wird in dem Verzeichnis initialisiert, das in der Eigenschaftendatei eingerichtet wurde.Erstellen Sie eine Verbindung: Wählen Sie JavaDB und dann den Namen der Datenbank, die erstellt wurde.

Ab diesem Punkt gibt es drei Möglichkeiten:

Tun Sie nichts und erstellen Sie den Code, der zum Erstellen der Tabellen usw. benötigt wird.Erstellen Sie ein Projekt und ein Projektverzeichnis der obersten Ebene mit dem Namen "sql" und platzieren Sie alle Ihre SQL-Skripts, die Tabellen usw. definieren, in diesem Verzeichnis.Verwenden Sie die eingebaute Funktion: Service-> jdbc: derby: // ??? Erstellen Sie die Tabellen mit der angezeigten Funktion, mit der Sie die erforderliche SQL eingeben können.

Persönlich (2) finde ich anfangs den besten Ansatz. Wenn Sie bereits SQL-Skripte mit der Erweiterung .sql haben, die Sie einfach unter dem Projekt öffnen, werden sie in den SQL-Editor geladen und können dort ausgeführt werden.

Alternativ kann (3) verwendet und das resultierende Skript gespeichert werden.

Auf jeden Fall kann viel erstellt werden, bevor die Codierung beginnt. Es gibt viele Möglichkeiten, dies zu tun. Ich hätte viel lieber alles vor dem Codieren erstellt - es macht das Entwickeln von Testfällen viel einfacher und unter Verwendung des Vorhergehenden muss ich nicht in und aus Netbeans springen, um Dinge zu modifizieren.

1

All" -Paket, herunterladen, erhalten Sie den glassfish-App-Server. Nach der Installation von w / glassfish sollten Sie in der IDE die Registerkarte Dienste> Datenbanken erweitern auswählen und Java DB sehen können. R. Klicken Sie auf Java DB und wählen Sie Start Server. Dann R. Klicken Sie erneut und wählen Sie Datenbank erstellen. Geben Sie den Datenbanknamen, den Benutzer und ein Passwort ein. Übrigens verwende ich normalerweise APP sowohl für den Benutzer als auch für das Passwort, da es auf diese Weise auch zum Standardschema wird und ich nichts für die Produktionsumgebung ändern muss.

Jetzt sollten Sie in der Java DB-Gruppe die neu erstellte Datenbank sehen. R. Klicken Sie darauf und wählen Sie Verbinden. Unter der Gruppe "Datenbanken" sollte ein Verbindungselement angezeigt werden. Erweitern Sie dieses Element und Sie sollten das APP-Schema in Fettdruck sehen, um anzuzeigen, dass es das Standardschema ist. Erweitern Sie das und R. Klicken Sie auf die Tabellen, wählen Sie Tabelle erstellen und Sie erhalten eine Benutzeroberfläche, mit der Sie eine Tabelle füllen können. Wiederholen Sie diesen Vorgang, bis alle Ihre Tabellen erstellt wurden. Andere Möglichkeiten zum Erstellen von Tabellen mit dem Befehl ide bestehen darin, mit der rechten Maustaste auf die Tabellen zu klicken und Befehl ausführen auszuwählen, in dem Sie DDL ausführen können, um das Tabellenschema zu definieren. Auf diese Weise erstelle ich eine Datenbank, indem ich mein Skript als .sql-Datei speichere, damit ich die Datenbank löschen und bei Bedarf erneut ausführen kann.

Hier ist ein Beispiel für das Skript mydbinit.sql, mit dem ich meine Tabellen in Derby erstelle.

create table usertable (
    username varchar(128) NOT NULL CONSTRAINT USER_PK PRIMARY KEY ,
    password varchar(128) NOT NULL,
    email varchar(128) NOT NULL,
    firstname varchar(128) NOT NULL,
    lastname varchar(128) NOT NULL
);

create table grouptable(
    username varchar(128) NOT NULL,
    groupid  varchar(128) NOT NULL,
    CONSTRAINT GROUP_PK PRIMARY KEY(username, groupid),
    CONSTRAINT USER_FK FOREIGN KEY(username) REFERENCES usertable(username)
        ON DELETE CASCADE ON UPDATE RESTRICT
);

insert into usertable(username,password,firstname,lastname) 
    values ('admin', '21232f297a57a5a743894a0e4a801fc3','','');
insert into grouptable(username,groupid) values ('admin', 'USER');
insert into grouptable(username,groupid) values ('admin', 'ADMIN');

Sie können die von Ihnen erstellte Datenbank ganz einfach löschen, indem Sie mit der rechten Maustaste auf die Datenbank klicken, auf die zu entfernende Datenbank klicken und Löschen auswählen. und verwenden Sie Ihr Skript erneut, um es neu zu generieren.

Hoffe das hilft! :)

5

jdbc:derby:foo;create=trueund es wird eine Datenbank mit dem Namen foo im Derby-Systemverzeichnis erstellt. Wenn Sie einen absoluten Pfad auf Ihrer Festplatte erstellen möchten, geben Sie einen absoluten Pfad an.jdbc:derby:/home/me/foo;create=true.

Sobald die Datenbank erstellt wurde, können Sie mit derselben URL eine Verbindung zu ihr herstellen oder die URL löschen;create=true Teil von.

Sie können das Derby-Systemverzeichnis über Systemeigenschaften festlegen, z.System.setProperty("derby.system.homeSystem.setProp", "/home/bar/whatever");. Ich denke, Sie müssten dies tun, bevor eine Derby-Datenbank gestartet wird, aber ich habe nie versucht, es danach zu tun. Ich habe festgestellt, dass die Einstellung des Derby-Systems als Startseite für die App und die Angabe der relativen Datenbank-URL besser funktionieren, aber das ist eine persönliche Präferenz.

Ist JDBC die dateibasierte Version? Amir.F
erstens danke für die antwort, zweitens kann ich immer noch keine verbindung zur datenbank herstellen, ich dachte mir, dass ich zuerst die datenbank definieren muss, und das habe ich über die netbeans-schnittstelle gemacht (keine ahnung, wie ich es anders machen soll) ), und das gab mir die URL für die DB, die ist jdbc: derby: history; create = true Ich habe alle Derby-JAR-Dateien in das "lib" -Verzeichnis meines Projekts verschoben. Ich bekomme immer noch die Fehlermeldung "Kein passender Treiber gefunden", deshalb habe ich in anderen Foren nachgesehen, aber es scheint, als würde nicht das, was sie sagten, funktionieren. Ich denke, es hat mit dem Verzeichnis zu tun, aber ich kann es nicht herausfinden. Amir.F
IIRC, der eingebettete Treiber registriert sich nicht selbst. Mach einnew EmbeddedDriver() (Lassen Sie netbeans das richtige für Sie auswählen - wenn dies nicht der Fall ist, ist Ihr Klassenpfad falsch), verwerfen Sie das Ergebnis und versuchen Sie dann, eine Verbindung herzustellen. Bill
Ja, in Java haben Sie immer eine Schnittstelle zu Derby über JDBC. jdbc: derby: ist das Präfix für eingebettete Verbindungen. Dies ist bei Netzwerkdatenbankverbindungen anders. Bill

Verwandte Fragen