Brauche Hilfe

christian_w_gg

Grünschnabel
Hallo,

ich bin neu hier im Forum,da ich dringend Hilfe brauche.
Erstmal vorab - ich habe eigentlich keine Ahnung von Java, ich versuche gerade mit etwas selbst beizubringen. Nun stehe ich vor einem Problem. Ich glaube am besten poste ich meinen ganzen Quellcode:

Java:
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.*;
import java.sql.*;
import java.text.*;
public class MyActionListener implements ActionListener 
{
	
	public String PlayerName;
	
	public NamenEingeben f;
	public MyActionListener(NamenEingeben f)
	{
		this.f=f;
		
	}
	
	
	public void actionPerformed(ActionEvent e)
	{
		Object obj = e.getSource();
			
		if(obj==f.btnWeiter) 
		{
				
				PlayerName=f.tfName.getText();
				Connection dbVerbindung=null;
				Statement sqlStatement=null;
				//String sqlString;
				ResultSet resultSet=null;
				int updateCounts[] = null;
				try
				{
					Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
					
				}
				catch(ClassNotFoundException f)
				{
					System.out.println("Fehler beim laden des Treibers"+f);
					System.exit(0);
				}
				try
				{
					dbVerbindung=DriverManager.getConnection("jdbc:odbc:Daten","","");
					
				}
				catch (SQLException f)
				{
					System.out.println("DB-Verbindung Fehler: "+f);
					System.exit(0);
				}
				try
				{
					
					Statement s = dbVerbindung.createStatement();
					s.addBatch("INSERT INTO Spieler (Spielername) VALUES ('"+PlayerName+"')");
					updateCounts = s.executeBatch();
					
					
				}
				catch (Exception f)
				{
					System.out.println("Fehler beim DB-Zugriff!"+f);
					System.exit(0);
				}
				
			
			
			
				f.tfName.removeNotify();
				f.btnWeiter.removeNotify();
				f.lblName.setText("Dein Name: "+PlayerName);
				
				try
				{
								
						Connection dbVerbindung=null;
						Statement sqlStatement=null;
						//String sqlString;
						ResultSet resultSet=null;
						Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
						dbVerbindung=DriverManager.getConnection("jdbc:odbc:Daten","","");
						Statement s = dbVerbindung.createStatement();
						
						ResultSet r = s.executeQuery("SELECT COUNT(*) AS rowcount FROM fragen WHERE schwierigkeitsgrad='leicht'");
						r.next();
						int ResultCount = r.getInt("rowcount") ;
						System.out.println("anzahl: "+ResultCount);
						r.close() ;
						double zufallszahl = 1+Math.floor(Math.random()*(ResultCount-1+1));
						System.out.println("zufallszahl: "+zufallszahl);
						int zaehler=1;
						ResultSet frageauswaehlen=s.executeQuery("SELECT * FROM fragen WHERE schwierigkeitsgrad='leicht'");
						while (zaehler<=zufallszahl) {
							frageauswaehlen.next();
							zaehler++;
						}
				
					int index=frageauswaehlen.getInt(1);
					String frage = frageauswaehlen.getString(2);
					String antwort1 = frageauswaehlen.getString(3);
					String antwort2 = frageauswaehlen.getString(4);
					String antwort3 = frageauswaehlen.getString(5);
					String antwort4 = frageauswaehlen.getString(6);
					String richtigeAntwort = frageauswaehlen.getString(7);
			
			
				
				
				}
			
				catch(NumberFormatException error)
				{
					System.exit(0);
				} 
	
		}

	}
}
Das Problemist,dass ich beim letzten Datenbankaufruf die Fehlermledung "Unhandled exception..." bekomme.
Des Weiteren möchte Ich die Stings Frage, antwort1-4 in eine andere Klasse übernehmen. diese 4 Strings sollen auf einem jeweiligen Button bzw Textfeld als Frage mit 4 Antwortmöglichkeiten (es soll ein Quiz werden zur erklärung) angezeigt werden.
Ich denke dass die Lösung nicht schwer ist, nur leider habe ich von Java keine Ahnung.
danke für eure Hilfe im vorraus,

MFG
chris
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

erstmal Willkommen hier im Forum. Worin besteht denn das Problem mit dem Code genau? :)

Grüße, D.

P.S.: Bitte benutz doch in Zukunft die entsprechenden Code-Tags hier im Forum, das macht längere Codes übersichtlicher. Habe deinen Beitrag mal entsprechend geändert. Und bitte verwende auch etwas aussagekräftigere Titel.
 
hi,

erstmal danke.
ja ich besitze bereits dieses buch, ich hatte auch schon ein bisschen java in der schule, kann also ein paar grundlagen.

mein problem hier ist,dass ich in folgendem abschnitt eine fehlermeldung bekomme:;
Java:
try
				{
								
						//Connection dbVerbindung=null;
						//Statement sqlStatement=null;
						//String sqlString;
						//ResultSet resultSet=null;
						Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
						dbVerbindung=DriverManager.getConnection("jdbc:odbc:Daten","","");
						Statement s = dbVerbindung.createStatement();
						
						ResultSet r = s.executeQuery("SELECT COUNT(*) AS rowcount FROM fragen WHERE schwierigkeitsgrad='leicht'");
						r.next();
						int ResultCount = r.getInt("rowcount") ;
						System.out.println("anzahl: "+ResultCount);
						r.close() ;
						double zufallszahl = 1+Math.floor(Math.random()*(ResultCount-1+1));
						System.out.println("zufallszahl: "+zufallszahl);
						int zaehler=1;
						ResultSet frageauswaehlen=s.executeQuery("SELECT * FROM fragen WHERE schwierigkeitsgrad='leicht'");
						while (zaehler<=zufallszahl) {
							frageauswaehlen.next();
							zaehler++;
						}
				
					int index=frageauswaehlen.getInt(1);
					String frage = frageauswaehlen.getString(2);
					String antwort1 = frageauswaehlen.getString(3);
					String antwort2 = frageauswaehlen.getString(4);
					String antwort3 = frageauswaehlen.getString(5);
					String antwort4 = frageauswaehlen.getString(6);
					String richtigeAntwort = frageauswaehlen.getString(7);
			
			
				
				
				}
hier markiert mir eclipse den gesamten abschnitt als fehler, ich verstehe jedoch nicht warum da ich weiter oben die gleichen befehle verwende ebenfalls in einem try catch und es funktioniert, warum funktioniert es dann hier nicht mehr?
eine zweite frage wäre: wie bekomme ich es hin, dass ich die variablen "string antwort 1-4 "
vererben kann? ist das in dieser methode überhaupt möglich?
danke für eure hilfe im vorraus,

mfg
chris
 
Wenn du eclipse benutzt, kann dir doch auch eclipse sagen was falsch ist ;)

Da werden halt ein paar Exception geworfen, die du nicht fängst. Da fehlt dann z.B. ein
Java:
catch(SQLException e) {e.printStackTrace();}

Wenn du das mal hinbekommst und verstehst dann kannst du dich auch um den Rest kümmern.
 
danke, hattest recht jetzt ist der coder fehlerfrei...

und ich zerbreche mir die ganze zeit den kopf was an diesem code noch falsch sein könnte ;-]

kann ich jetzt die werte,welche ich aus der datenbank auslese ( ist alles innerhalb der methode public void actionPerformed(ActionEvent e). an eine andere klasse erben (nennt man das so?) wenn ja,wie müsste ich das anstellen?

danke für eure hilfe im vorraus,

mfg
chris
 
Also den ActionListener würde ich nicht in eine eigene Klasse packen. Dann denke ich hast du das Problem auch nicht mehr.

Schau mal:
Java:
public class DeineKlasse implements ActionListener {

public void actionPerformed(ActionEvent e)
    {
        Object obj = e.getSource();
        if(obj==f.btnWeiter)
        {
            readFromDatabase();
       }
}

private void readFromDatabase(){
 //Hier packste alles aus deiner sonstigen actionPerformed rein.
// Die Strings hättest du dann in der selben Klasse, könntest sie also auch hier weiterbenutzen.
}

//Alles sonstige in deiner Klasse
// Zuweisen des ActionListener mit:
//button.addActionListener(this);

}

Die Grundlagen von Java kann ich dir hier aber nicht beibringen. Rumprobieren und viel lesen wird da mehr helfen...
 
Zurück