# Datenbank für Fragen/ Antworten



## javaa (6. Feb 2012)

Hey Leute,

habe mal eine Fragen zu den Datenbanken bei Java.. habe zwar ein wenig Ahnung von Programmiersprachen und ein wenig Vorkenntnisse von Java, aber sobalds an die Datenbanken geht check ich garnichtsmehr. Hab mir jetzt zwar ein paar Threads angeschaut und ne Weile gegoogelt, aber nirgendwo konnte mir gesagt werden, wie ich eine einfache Datenbank erstelle. ich hoffe ihr könnt mir da schnell weiterhelfen^^

Ziel ist es, eine Datenbank zu erstellen, die so, oder so ähnlich aussehen soll:


```
FZ1= Wie lautet die Hauptstadt von
FZ2= Deutschland

A1= Paris
A2 = Berlin
A3 = Warschau
A4 = New York
```

Das heisst, in der Datenbank sollen etliche Fragen (durch FZ (Fragezeile) gekennzeichnet) untereinander geschrieben werden und dannach immer die Antwortmöglichkeiten (A1, A2 usw.)

Meine Frage ist jetzt, wie kann ich eine solche Datenbank erstellen? Ich kenne das nur aus C++, da konnt ich das einfach in den Editor einfügen und dann später wieder rauslesen, geht hier wohl ein wenig anders...:bahnhof: und meine zweite Frage, wie kann ich den ausgelesenen Text in einen Button einfügen? Habe da bisher den Code:


```
yourButton.setText("neue Beschriftung");
```

funktioniert das dann so ähnlich? muss ich da dann etwas nur A1 oder A2 in die Klammer schreiben? 

Ich freu mich über jede Antwort von Euch!! 

Gruß


----------



## Camino (7. Feb 2012)

Wenn du das wirklich mit einer Datenbank machen möchtest (eine andere Möglichkeit wäre vielleicht auch XML oder Textdatei - je nach Umfang der Fragen), solltest du dir erst mal überlegen, welche Datenbank du nutzen möchtest. Einen Datenbankserver oder eine in Java integrierte Datenbank. Soll das dann als Java-Anwendung laufen? Lokal oder übers Internet? Dann solltest du dich grundsätzlich mit den Datenbanken beschäftigen, wie die funktionieren.

Danach solltest du dir über deine Datenbankstruktur Gedanken machen. Am besten wäre da wohl, wenn jeder Datensatz aus 1 Frage und 4 Antwortmöglichkeiten bestehen würde. Evtl. kommt noch ein Feld für den Schwierigkeitsgrad der Frage hinzu. Solltest du dir vielleicht vorher mal Gedanken machen, was bei einem solchen Ratespiel noch wichtig sein könnte. Es ist besser, sich darüber vorher Gedanken zu machen und das dann gleich einzubauen, als dies später mit mehr Aufwand nachträglich zu machen. Eine fortlaufende Zahl als ID oder Schlüssel ist auf jeden Fall auch in der Tabelle Pflicht.

Wenn die DB-Struktur so weit steht, kannst du dich mit der Anbindung an Java (Connection, Statements, ResultSets, SQL...) beschäftigen.


----------



## tuttle64 (7. Feb 2012)

Überlege auch, ob zu jeder Frage auch mehr oder weniger als 4 Antworten angezeigt werden sollen und ob es nur eine richtige oder mehrere Antworten möglich sind. 

Ich habe vor einiger Zeit ebenfalls eine derartige Fragen/Antworten-DB in Java realisiert. Als DB habe ich MySQL verwendet. Eine Tabelle beinhaltete die Fragen. Dazu gehörte ein Feld für den Fragetyp (mc für multiple choice, fi für fill-in Fragen/Lückentexte etc.), ein Feld für die Speicherung des Themas (damit kann jede Frage einem Thema zugeordnet werden). Bei Fragen des mc-Typs wurden die Möglichen Antworten in einem Textfeld getrennt durch # gespeichert. Bei Einlesen der Fragen wurde das ganze Textfeld in Antworten gesplittet und entsprechend im Panel angezeigt. Ich will nicht sagen, dass das ein optimales Design ist. Es soll einige Ideen aufzeigen.


----------



## HimBromBeere (7. Feb 2012)

> FZ1= Wie lautet die Hauptstadt von
> FZ2= Deutschland
> 
> A1= Paris
> ...


In einer Datenbank wird man normalerweise keine Formatierungen vornehmen. Also wird deine Datenstruktur wahrscheinlich am ehesten so aussehen:
tableAntworten



long: Frage Text: Antwort
1 Paris
1 Berlin
1 Warschau
1 New York
tableFragen



1 Wie lautet Die hauptstadt von Dtschl?
2 Wie alt wurde Methusalem

EDIT: Muss ich nur noch rausbekommen, wie man hier eine Tabelle formatiert...


----------



## javaa (7. Feb 2012)

schon mal danke für eure Antworten!

@camino: genau das, was du geschrieben hast, ist mir gestern abend erst klar geworden. Der Grund dafür, dass ich mit den "Datenbanken" nicht klar kam, war, dass ich Dinge für Datenbanken gehalten hatte, die gar keine sind (<-- verwirrender Satz, ging nicht besser^^). Habe zum Beispiel gedacht, dass eine txt Datei, in die ich meine Fragen und Antworten einspeicher schon eine Datenbank ist... 
Seit gestern Abend ist mir nun aber einiges klar geworden.

In dieser Form sind die Fragen, die ich auslesen möchte in einer txt Datei abgespeichert. Hier is mal die Frage 59 dargestellt. In einer Txt datei befinden sich immer mehrere Fragen


```
[59]
FZ=Wie lautet die Hauptstadt Deutschlands?

Min=0
Max=2000
Antwort_1=0Stuttgart
Antwort_2=1Köln	
Antwort_3=0Berlin	
Antwort_4=0Hamburg
```

Wie kann ich jetzt aber eine dieser Fragen direkt ansprechen, bzw. zufällig eine auswählen lassen? und ein zweites Problem, wie kann ich Strings, bzw. Strings die in Arrays gespeichert sind erst ab dem zweiten Zeichen auslesen lassen? 

Ich bin euch dankbar für jede Antwort
gruß


----------



## Gast2 (7. Feb 2012)

Wie gestern schon im Chat erwähnt kannst du die Datei sehr bequem mit ini4j auslesen.


----------



## HimBromBeere (7. Feb 2012)

> Wie kann ich jetzt aber eine dieser Fragen direkt ansprechen, bzw. zufällig eine auswählen lassen? und ein zweites Problem, wie kann ich Strings, bzw. Strings die in Arrays gespeichert sind erst ab dem zweiten Zeichen auslesen lassen?



Also, zuallererst musst du deine Text über einen InputStreamReader einlesen. 
Von dem list du dann jede Zeile mittels Reader#readline(), wodurch du erstmal eine Zeichenkette für die gesamte Zeichenkette erhälst. 
Zu 1: Du erzeugst dir eine Zufallszahl und liest solange Zeilen deiner Datei ein, wie ein Zeilenzähler (den du mit jedem readLine() um eins hochzählst) kleiner als diese Zufallszahl ist. Bist du bei der gewünschten Zeile angekommen, kannst du sie weiterverarbeiten, womit wir bei 2. sind
Zu 2: lies dir mal die API zu String durch: String (Java 2 Platform SE v1.4.2)
Insebsondere 
	
	
	
	





```
substring()
```
 sollte in deinem Fall von Interesse sein...


----------



## javaa (7. Feb 2012)

danke für die schnelle Antwort! und auch danke an ElkeB, hab mir des gestern mal schnell angeschaut, war mir dann aber nicht ganz sicher ob es das richtige ist.. ich probiers mal aus.


----------

