Java Dynamische Datenbank für Fragebögen

LisaFCD schrieb:
@Wahli: Mir wurde gesagt, dass immer die neuste Version vorhanden ist. "Oberfläche zusammenklicken" wäre ja schön, aber es muss ja anhand der Anzahl der Fragen und Antworten automatisch erstellt werden. Wenn das mit NetBeans funktioniert wäre das schön, finde ich bisher am besten.

Wenn Du partout einen GUI-Builder verwenden möchtest, kannst Du das durchaus tun. Erstelle die Maske(n), mit allen notwendigen statischen Elementen und passe hernach den Teil an, der dynamisch sein muss (um etwa nicht nur eine Frage anzuzeigen, sondern viele). Je nachdem wie viele Fragen es sind und wie die Anwendung sonst gestrickt ist, böte es sich vielleicht an, den Fragenteil mit einer gesonderten Komponente zu realisieren, die man nur noch in das Layout einbetten muss.

Man könnte eine solche Komponente z.B. so realisieren, dass dem Benutzer immer nur eine Frage mit den jeweiligen Optionen angezeigt wird und der Benutzer nach Bearbeitung mittels Button zur nächsten Frage springen kann. Wie bei einem Quiz könnte man anzeigen, wieviele Fragen noch verbleiben. Um schnell Fragen anwählen zu können, könnte man per Button eine Übersicht anzeigen lassen, damit man nicht durch alle Fragen klicken muss, um ein schon beantwortete Frage noch mal anzuzeigen.
 
Hab auch überlegt es mit Tomcat und Eclipse zu machen... was gibt es da für Nach- und Vorteile?
 
Du machst dir wirklich sorgen darüber, welche IDE du einsetzt? Hast du bisher schön "größere" Projekte umgesetzt oder ist das dein erstes?
Was studierst du eigentlich genau?

Ich verweise nochmal auf meinen Vorschlag, dass du dir mal Access anschaust, damit kannst du die Fragen relativ einfach erstellen und dann auch in einer Datenbank ohne groß zu Programmieren erfassen. Angesichts der doch einfachen Aufgabenstellung und des anscheinend vorhandenen Vorwissens eine gute Alternative.
 
Ich persönlich habe mich den ganzen PHP-Geschichten verweigert aber retrospektive betrachtet kann ich dir vor allem für eine Bachelor-Arbeit nur empfehlen dich in das Thema einzuarbeiten. Das wird dir nicht nur beruflich viele Perspektiven eröffnen sondern scheint auch allgemein sehr gefragt zu sein (Stichworte: OpenSource, Webentwicklung....)

Natürlich kannst du das auch auf Java übertragen mit der Virenschleuder kann man heutzutage wohl auch nichts falsch machen.
 
Ja mach mir da große Sorgen :D Es gibt so viel und ich möchte nicht alles ausprobieren (Auch wenn das mit zu einer Bachelorarbeit gehört^^) und denke dass erfahrenere User mir da gute Tipps geben können.
Das am Ende umzusetzen wird denke ich weniger ein Problem. Hab viele Ideen und dank Google viele Anweisungen wie man es umsetzt.

Studiere Informatik. Mein erstes eigenes größeres Programm. Bei einem anderen Teamprojekt hatte ich mich lediglich um die Datenbank gekümmert (Tabellen, Attribute, Trigger). Also wenig mit der Verbindung der Daten(bank) und UI.
 
Warum immer diese Versuche, eine Webanwendung zu forcieren? Habt ihr sie noch alle? Sensible Patientendaten auf einem Rechner liegen haben, der außerhalb des direkten Zugangs der Arztpraxis liegt? Beste Idee seit Stalingrad!
 
Zuletzt bearbeitet:
Eine Web anwendung bedeutet ja nicht das sie aus dem Web aufrufbar sein muss,
es bedeutet auch nicht das sie aus dem Lan aufrubar sein muss.

Wenn man es will kann man sie auch einfach Lokal laufen lassen und gut ist.
Noch mal möchte ich auf meine vorgeschlagen Lösungen verweisen,
wo von spring-boot ein tomcat server mit sich bringt ohne das man ihn expliziet hosten muss usw.

Mein empfehlung wäre es
versuch eine Anwendung bauen die nur aus Java besteht,
kein extra mysql server, kein extra tomcat server.
 
Okay ich danke euch vielmals!!
Werde mich jetzt mal reinfuchsen und mich wieder melden bei Erfolg oder neuen Fragen :D
 
Prima: Um das Problem der Plattformabhängigkeit zu lösen, kann man das Projekt als Webanwendung implementieren.
Secunda: Das ist aus folgendem guten Grund eine bescheuerte Idee: [...]
Tertia: Kein Problem, dann lässt man halt einfach den Webserver lokal laufen.
Secunda: Damit fällt aber der ursprüngliche Grund, eine Webanwendung zu bauen komplett flach und man macht das für OP wegen seiner Komplexität problematische Projekt noch komplexer, ohne dadurch etwas zu gewinnen.
Quarta: Hmmm..... Wie wäre es denn dann, wenn man das Projekt einfach als Webanwendung implementiert?
 
Zuletzt bearbeitet:
Ich fand den Vorschlag Spring Boot ganz passend. Mit embedded DB, nicht XAMPP. Einen Prototypen bei den Anforderungen aus dem Boden zu stampfen, wäre für einen in diesen Technologien erfahrenen Entwickler wohl in ca. 3 Tagen möglich. Daher ist das im Rahmen einer Bachelorarbeit durchaus schaffbar und zudem ein großartiges Projekt, mit dem man sich bewerben kann, falls es einen danach in den EE-Bereich zieht.
 
Hey, also als erstes muss ich sagen, dass mir die Microsoft Access Variante am besten gefallen hat. Echt schön für Leute mit nicht so viel Ahnung, da es sehr intuitiv ist ;)

Dennoch habe ich mich, aufgrund einer Empfehlung eines Kommilitonen für Eclipse und einen Tomcat-Server entschieden.
Die Anbindung von einer HSQLDB und Tomcat in Eclipse war leicht umzusetzen.
Eine Oberfläche mit Servlets und JSP zu erstellen geht auch ganz gut.

Datenbank mit Beispiel-/Testdaten ist auch vorhanden.

Jetzt probiere ich diese Daten auch zu benutzen.

Vielleicht habt ihr ja da noch eine Lösung?!

Hab ein Servlet erstellt, das nun die Fragen in Scrollbars zeigen soll.

Quasi:
out.println("<SELECT NAME='Frage_Liste'>");
out.println("<OPTION>$PARAMETER</OPTION>");
out.println("</SELECT>");

Bisher bekomme ich ja logischer Weise nur "$PARAMETER" als Option in der Scrollbar angezeigt :D
Wie bekomme ich das hin dass es mir den INHALT des Parameters anzeigt?
Und wie bekomme ich es hin das $PARAMETER alle Elemente aus der Tabelle Fragen ausgibt?


durch: ResultSet rs = stmt.executeQuery( "SELECT Frage_ID, Frage_Text FROM Fragen" );

bekomme ich ja alle Daten, die ich möchte aber wie binde ich das richtig ein?
Müsste ja iwie so in der Art aussehen $PARAMETER = stmt.executeQuery("SELECT ..."); ?!?!
 
Code:
ArrayList<String> fragen = new ArrayList<String>();
while(rs.next()) {
fragen.add(rs.getString("collumn"));
}

sowas würd ich jetzt machen... ausm kopf ungetestet..

Aber da findest du bestimmt tausende Anleitungen wenn du "Java sql ResultSet" bei google eingibst.
 
Das ResultSet muss so oder so ausgewertet werden... Die String ArrayList war jetzt hierbei nur das einfachste Beispiel. Aber ich geb dir vollkommen Recht, gemacht wirds so nicht. Ich hab mich hier ein bisschen auf das gegeben Konstrukt eingeschossen und zu wenig nachgedacht.


Wobei ich mich frage warum Java verwendet wird, wenn offenbar nur wenig kenntniss vorhanden ist.

Eine Bachelorarbeit ist bei "uns"(in der Schweiz) eine Arbeit die im letzten Semester des Bachelorstudiums gemacht wird und darüber entscheidet ob man besteht oder nicht. Da würde ich keine Technologie einsetzen, die ich kaum kenne.

Zumal da Projekt nicht sonderbar kompliziert ist meiner Meinung nach... Applikation mit DB zugriff 2-3 Tables und einfache Zugriffe... Da müsste man von der Architektur her auftrumpfen, um zu zeigen was man kann.
 
Weil es Java sein MUSS. Und ich kann daran nix ändern und werde ich auch nicht, habe bisher immer alles hinbekommen, was ich mir vorgenommen habe...

Ja mit JSP klappt's auch nicht wirklich, probier ich auch schon die ganze Zeit.

Hab im Internet etwas gefunden um die Datenbank anzusprechen:
...
Connection con =null
Statement st = null
ResultSet rs = null
...
try{
Class.forName("org.hsqldb.jdbcDriver").newInstance();
cn = DriverManager.getConnection( "jdbc:hsqldb:file:C:/DB" , "sa" , "" );
st = cn.createStatement();
rs = st.executeQuery( sSql );
...
und es gibt immer einen Fehler bei Class.forName(Driver)....
Also irgendwo muss ich da noch den Fehler finden.

Und möchte bitte wirklich nur hilfreiche Kommentare, bin dabei Java zulernen.
Und ja klar an sich ist das Projekt auch nicht viel, sind 6Tables und im großen und ganzen nur ein paar INSERTS und UPDATES. Die andere Hälfte ist dann das Schreiben der Arbeit.
Den Ansatz hab ich gefunden aber geht nun mal nicht alles gut beim ersten Mal - deswegen dieses Forum, damit nette Menschen mir helfen können ;)
 
ist der hsql treiber im classpath? Nach deiner Fehlerbeschreibung scheint mir das der Fehler zu sein.

Ansonsten mal die Exception die geworfen wird hier posten. Dann kann man besser helfen bei Fehlern

Ansonsten hast du einmal Connection con, aber dann beim Verbindungsaufbau nur cn geschrieben.
 
LisaFCD schrieb:
und es gibt immer einen Fehler bei Class.forName(Driver)....
Deutet i.d.R. immer auf eine fehlerhafte Einbindung der Library hin. Wie genau hast du die jar o.ä. eingebunden?
Kann es sein das du ggfs. von der Library benötigte Abhängigkeiten nicht eingebunden hast?
 
Ja der Treiber fehlte im Classpath (dachte eigentlich, dass ich das bereits erledigt hätte).

Auslesen klappt alles prima. Bin jetzt schon so weit, dass mir Fragen und Antworten angezeigt werden.

Frage1
Scrollbar mit allen Antworten bei denen ID der Frage = 1
Frage 2
Scrollbar mit allen Antworten bei denen ID der Frage = 2
....

Hänge jetzt beim insert in die Datenbank.
Müsste ja einen Submit-Button machen, der dann alle angeklickten Antworten in allen Scrollbars in die DB einträgt, aber weiß noch nicht ganz wie.
Im Endeffekt sollte sowas rauskommen.
schleife über alle Fragen/Scrollbars{
INSERT INTO Patienten_Antworten (Patient_ID, Frage_ID, Antwort_ID) VALUES ( $PatientenID, $Frage, "Antwort")
}
Habt ihr Ideen, dass alle Antworten auf einmal beantwortet werden können?

Code für das Anzeigen: (RF_ID ist die ID der Frage)
Connection cn = null;
Statement st = null;
ResultSet rs = null;
ResultSet antw = null;

try{
Class.forName("org.hsqldb.jdbcDriver").newInstance();
cn = DriverManager.getConnection("jdbc:hsqldb:file:C:/DB" , "sa" , "" );
st = cn.createStatement();
rs = st.executeQuery( "SELECT Sortier_Nr, Frage FROM Fragen" );
ResultSetMetaData rsmd = rs.getMetaData();


int n = rsmd.getColumnCount();

int var = 1;
while(rs.next()){
out.println("<br></br>");
for(int i = 1; i<=n; i++) out.println(rs.getString(i));


antw = st.executeQuery("SELECT Text FROM Antworten WHERE RF_ID =" + var + ""); //Antworten mit RF_ID = i
var = var + 1;
ResultSetMetaData antwmd = antw.getMetaData();
int m = antwmd.getColumnCount();


out.println("<SELECT NAME='Antworten_Liste'>");
while(antw.next()){
out.println("<OPTION>");
for(int j = 1; j <=m; j++) out.println(antw.getString(j)); //Antworten ausgeben
out.println("</OPTION>");}
out.println("</SELECT>");
}
 
Du machst ein ganze gewöhnliches HTML Form und submittest es zu einem anderen Servlet, in dem du POST implementiert hast.

P.S.: Der Code ist in vielerlei Hinsicht gruselig. Weiß nicht, was du studierst, aber von einem Informatiker würde ich deutlich mehr Qualität und Sorgfalt erwarten.
 
Zuletzt bearbeitet:
Ja die Antworten (in Textform) bekomme ich schon raus, muss es irgendwie noch hinkriegen die dazugehörigen Fragen- und Antworten_IDs rauszukriegen um dann ein INSERT machen zu können.

Und der Code wird im Nachhinein noch schön gemacht, erstmal ist mir die Funktionalität wichtig. Ein schöner Code nützt mir erstmal nix wenn nichts funktioniert.
 
Zurück
Oben