String mit ArrayList Inhalten vergleichen

Ok ich werde jetzt mal alle 3 Klassen sowie die Datenbankdetails posten.

MainKlasse:

Code:
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Mainclass {
	public static final String EINGABE_UNGUELTIG = "Ihre Eingabe war ungültig. Geben Sie bitte erneut Ihre Auswahl von folgenden ein!";
	public static boolean cancel=false;		
	public static String zeile;
	public static Scanner einlesenscanner = new Scanner(System.in);	
	//public static int anzahlactor = 0;

	//main klasse geändert 																									NEU
	public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException{
		System.out.println("Willkommen. Viel Spass mit der Rainy Day Movie Database!");
		startScreen();
	}
		
	//Aufteilung der Methoden                                                                                                  NEU
	public static void startScreen() throws IOException, SQLException, ClassNotFoundException{
		Statement st;
		ArrayList<Movie> movies;
		st=connect();
		movies=execute_select(st);
	
		System.out.println("\nHauptmenue ");
		System.out.println("________________________________________");
		System.out.println("0: Alle Filme anzeigen ");
		System.out.println("1: Einen Eintrag editieren ");
		System.out.println("2: Einen Film oder Schauspieler hinzufügen");
		System.out.println("3: Einen Film suchen ");
		System.out.println("4: Die Filme sortieren");
		System.out.println("5: Einen Film oder Schauspieler löschen");
		System.out.println("9: Programm beenden\n");
		
		menuAuswahl(movies, st);
	}
	
	//neuerstellte methode 																													NEU
	public static void menuAuswahl(ArrayList<Movie> movies, Statement st) throws IOException, SQLException, ClassNotFoundException {
	ResultSet rs;
	String menuRegex = "[0-9]", menueeingabe = "", fehlermeldung = "Was möchten Sie nun tun?";
	int rueckgabe = -1;
	boolean menuewiederholen = false;
	
	// ÄNDERUNG Die Eingabe im Hauptmenu wird geprüft ob sie wirklich den vorhanden Optionen (0-9) entspricht					NEU
		while (menuewiederholen== false) { //wird keine 0-9 eingegeben, wiederholt sich diese stelle ewigs	
			System.out.println("Wählen Sie die entsprechende Zahl aus!");
			System.out.print("--> ");
			menueeingabe = einlesenscanner.nextLine();
			Pattern p4 = Pattern.compile(menuRegex);
			Matcher m4 = p4.matcher(menueeingabe);
			menuewiederholen = m4.matches();
	        if ( menuewiederholen == false ){
	        	System.out.println("Falsche Eingabe. Geben Sie bitte nur eine einstellige Zahl ein!");
	        }
	        
	        //0 wurde eingegeben, alle filme bitte anzeigen																													NEU
	        else if (menueeingabe.equals("0")){
	        	menuewiederholen = false;
	        	System.out.println("Alle diese Filme befinden sich in unserer Datenbank:\n");
				show(movies);
				
				
				while ( menuewiederholen == false ) {
					System.out.println(fehlermeldung);
					System.out.println("A  = Zurück zum Hauptmenu");
					System.out.println("B  = Programm beenden");
					menueeingabe = einlesenscanner.nextLine();
			        menuewiederholen = ((Pattern.compile("[a-bA-B]").matcher(menueeingabe)).matches());
			        if (menuewiederholen == false ) fehlermeldung = EINGABE_UNGUELTIG;
				}
				
				switch(menueeingabe.toUpperCase().charAt(0)) {					
					case 'A':
						startScreen();
						break;
					case 'B':
						System.out.println("Auf Wiedersehen!");
						System.exit(0);
				}
	        }
			
	        
	     // Option 1																													NEU
			else if(menueeingabe.equals("1")){
				System.out.println("noch nicht realisiert!!");
			}
	     // Option 2																													NEU
			else if(menueeingabe.equals("2")){
				menuewiederholen = false;
				fehlermeldung="Möchten Sie einen Schauspieler oder einen Film hinzufügen?";
				while (menuewiederholen == false ) {
					System.out.println(fehlermeldung);
					System.out.println("1 = Film\n2 = Schauspieler");
					menueeingabe = einlesenscanner.nextLine();;
			        menuewiederholen = ((Pattern.compile("[1-2]").matcher(menueeingabe)).matches());
			        if ( menuewiederholen == false ) fehlermeldung = EINGABE_UNGUELTIG;
				}
				
		        switch(menueeingabe.toUpperCase().charAt(0)) {
			        case '1':
						insertMovie(movies, st);
						break;
					case '2':
						insertActor(movies, st, true);						
						break;
					default: 			        
		        }
			}
	     // Option 3																													NEU
			else if(menueeingabe.equals("3")){
				menuewiederholen = false;
				fehlermeldung="Nach was wollen Sie suchen?";
				rueckgabe = -1;				
				
				while (menuewiederholen == false ) {
					System.out.println(fehlermeldung);
					System.out.println("1 = Filmname\n2 = Schauspieler");
					menueeingabe = einlesenscanner.nextLine();;
			        menuewiederholen = ((Pattern.compile("[1-2]").matcher(menueeingabe)).matches());
			        if ( menuewiederholen == false ) fehlermeldung = EINGABE_UNGUELTIG;
		        }
				
				switch(menueeingabe.toUpperCase().charAt(0)) {
			        case '1':
			        	System.out.println("Wie heist der Film?");
						menueeingabe = einlesenscanner.nextLine();
						search(movies, menueeingabe, 1);
						break;
			        	
					case '2':
						System.out.println("Welchen Schauspieler möchten sie?");
					    menueeingabe = einlesenscanner.nextLine();
						search(movies,menueeingabe,2);
						break;
					default: 			        
				}
			}
	     // Option 4																													NEU
			else if(menueeingabe.equals("4")){
				System.out.println("noch nicht realisiert!!");
			}
	     // Option 5																													NEU
			else if(menueeingabe.equals("5")){
				System.out.println("noch nicht realisiert!!");
			}
	     // Option 9																													NEU
			else if(menueeingabe.equals("9")){
				System.out.println("Auf Wiedersehen!");
				System.exit(0);
			}
		
		}
		}
	
	public static void insertMovie(ArrayList<Movie> movies, Statement st)throws SQLException, IOException, ClassNotFoundException {
		ResultSet rs;
		int rueckgabe = -1, rID = 0, yID = 0;
		int aID = 0;
		String fname, fdescription, fehlermeldung = "",menueeingabe="";
		int id=0, anzahlactor = 0;
		boolean wiederholen = false, temp1 = false, temp2 = false;
		
		
		System.out.print("Geben Sie den Titel des Films ein:\n-->");
		fname=einlesenscanner.nextLine();
		
		System.out.print("Geben Sie eine Beschreibung des Films ein:\n-->");
		fdescription=einlesenscanner.nextLine();
		
		System.out.println("Geben Sie eine Bewertung des Films ein( 1-5 ):");
		while (wiederholen == false ) {
			System.out.println(fehlermeldung);
			menueeingabe = einlesenscanner.nextLine();
			wiederholen = ((Pattern.compile("[1-5]{1}").matcher(menueeingabe)).matches());
			/*try {
				rueckgabe = Integer.parseInt(menueeingabe);
				if ( rueckgabe >= 1 && rueckgabe <= 10  ) temp2 = true;
				else temp2 = false;
			} catch ( Exception e ){
				temp2 = false;
			}*/
			fehlermeldung = EINGABE_UNGUELTIG+"\nGeben Sie eine Zahl zwischen 1 und 5 ein!";
			//if ( temp1 == true && temp2 == true ) wiederholen = true;
			//else wiederholen = false;
		}
		rID = Integer.parseInt(menueeingabe);
		
		fehlermeldung = "";
		wiederholen = false;
		System.out.println("Geben Sie ein wann der Film erstellt wurde:\n-->");	
		while (wiederholen == false ) {
			System.out.println(fehlermeldung);
			menueeingabe = einlesenscanner.nextLine();
			temp1 = ((Pattern.compile("[0-9]{4}").matcher(menueeingabe)).matches());
			try {
				rueckgabe = Integer.parseInt(menueeingabe);
				if ( rueckgabe <= 2050 && rueckgabe >= 1900 ) temp2 = true;
				else temp2 = false;
			} catch ( Exception e ){
				temp2 = false;
			}
			fehlermeldung = EINGABE_UNGUELTIG+"\nGeben Sie ein Jahr zwischen 1900 und 2050 ein!";
			if ( temp1 == true && temp2 == true ) wiederholen = true;
			else wiederholen = false;
		}
		yID = rueckgabe;
		
		id= movies.size()+1; 
		//film einfügen
		try{
			st.executeUpdate("INSERT INTO MOVIE VALUES ("+ id +", '"+ fname +"', '"+ fdescription + "'," + rID + ", " + yID +")");
		}catch(SQLException e){
			e.getMessage();
		}
		
		
		fehlermeldung = "";
		wiederholen = false;
		rs = st.executeQuery("SELECT COUNT(*) FROM Actor");
		//rs = st.executeQuery("SELECT actor_id from Actor");
		while (rs.next()) anzahlactor = rs.getInt(1);
		System.out.println("Geben Sie die ID des Schauspielers ein:\n-->");	
		while (wiederholen == false ) {
			System.out.println(fehlermeldung);
			menueeingabe = einlesenscanner.nextLine();
			temp1 = ((Pattern.compile("[0-9]+").matcher(menueeingabe)).matches());
			try {
				rueckgabe = Integer.parseInt(menueeingabe);
				System.out.println(rueckgabe);
				System.out.println(anzahlactor);
				if ( rueckgabe <= anzahlactor && rueckgabe >= 1 ) temp2 = true;
				else temp2 = false;
			} catch ( Exception e ){
				temp2 = false;
			}
			fehlermeldung = EINGABE_UNGUELTIG+"\nGeben Sie die richtige ID vom Schauspieler ein!";
			if ( temp1 == true && temp2 == true ) wiederholen = true;
			else wiederholen = false;
		}
		aID = rueckgabe;
		
		
		st.executeUpdate("INSERT INTO MOVIE_ACTOR VALUES ("+ id +","+aID+" )"); //mit tabelle schauspieler verbinden
		
		// ÄNDERUNG  Die folgende nachricht erscheint und das program kehrt zum startbildschirm zurück								NEU
		System.out.println("Der Film wurde ins Archiv aufgenommen" + "\n");			
		startScreen();
	}
	
	public static void insertActor(ArrayList<Movie> movies, Statement st, boolean withmovie)throws SQLException, IOException, ClassNotFoundException {
		ResultSet rs;
		int id=0, aid=0, anzahlMovies=0, anzahlActor =0;
		String aname, avorname;		
		int rueckgabe = -1;	
		String menueeingabe="", fehlermeldung = "";		
		boolean wiederholen = false, temp1 = false, temp2 = false;
		
		rs = st.executeQuery("SELECT COUNT(*) FROM Actor"); //zählen wie viele einträge
		while (rs.next()) anzahlActor = rs.getInt(1);
		aid = anzahlActor + 1;
		System.out.println("Geben Sie den Vornamen ein:\n-->");
		avorname= einlesenscanner.nextLine();
		System.out.println("Geben Sie den Namen ein:\n-->");
		aname=einlesenscanner.nextLine();
		//aid=aid+1;
		
		
		
		try{
		st.executeUpdate("INSERT INTO ACTOR VALUES ('"+aid+"','"+aname+"', '"+avorname+"')");//einfügen schauspieler
		}catch(Exception e){
		//	e.getLocalizedMessage().toString();
			e.getMessage();
		}
		
		////HIER GIBT ES NOCH PROBLEM, KEINE FEHLERMELDUNG
		fehlermeldung = "";
		wiederholen = false;
		rs = st.executeQuery("SELECT COUNT(*) FROM Movie");		
		while (rs.next()) anzahlMovies = rs.getInt(1);
		System.out.println("Geben sie die ID eines Filmes an wo er Mitspielt::\n-->");	
		//System.out.println(anzahlMovies);
		while (wiederholen == false ) {
			System.out.println(fehlermeldung);//DIESE FEHLERMEDLUNG WIRD SCHON AUSGEGEBEN OBWOHL MAN NICHTS GETIPPT HAT
			menueeingabe = einlesenscanner.nextLine();
			temp1 = ((Pattern.compile("[0-9]+").matcher(menueeingabe)).matches());
			try {
				rueckgabe = Integer.parseInt(menueeingabe);
				System.out.println(rueckgabe);
				System.out.println(anzahlMovies);
				if ( rueckgabe <= anzahlMovies && rueckgabe >= 1 ) temp2 = true;
				else temp2 = false;
			} catch ( Exception e ){
				temp2 = false;
			}
			fehlermeldung = EINGABE_UNGUELTIG+"\nGeben Sie die richtige ID vom Film ein!";
			if ( temp1 == true && temp2 == true ) wiederholen = true;
			else wiederholen = false;
		}
		id = rueckgabe;
		
		
		st.executeUpdate("INSERT INTO MOVIE_ACTOR VALUES ("+ id +","+aid+" )"); //einfügen film wo er mitgemacht hat.
			
					
			
		
		System.out.println("Der Schauspieler wurde ins Archiv aufgenommen" + "\n");	
		startScreen();
	}

	public static Statement connect() throws ClassNotFoundException, SQLException{
		final String HSQLDB_TREIBER_PFAD = "org.hsqldb.jdbcDriver";
		final String DB_PFAD = "jdbc:hsqldb:file:C:\\Users\\kiran\\programme\\programmieren\\" +
					  "hsqldb\\data\\rainydays\\rainydays2";
		Class.forName(HSQLDB_TREIBER_PFAD);
		Connection con = DriverManager.getConnection(DB_PFAD);
		Statement st = con.createStatement();
		return st;
	}
	//Methode liest alle einträge aus db aus und speichert sie in einer array list
	public static ArrayList<Movie> execute_select(Statement st) throws SQLException{
		int anz=0;
		int id=0;
		int idlast=1;
		String name="";
		String description="";
		int rating=0;
		int year=0;
		
		ArrayList<Movie> movies= new ArrayList<Movie>(); //arraylist movies erstellen
		ArrayList<Actor> actors= new ArrayList<Actor>();
		//SQL befehl ausführen
		ResultSet rs = st.executeQuery
			("SELECT Movie.movie_id, Movie.movie_name, Movie.movie_description," +
			" Movie.movie_rating, Movie.movie_year,Actor.actor_id, Actor.actor_prename, Actor.actor_name FROM Movie, " +
			"Actor, movie_actor WHERE Movie.movie_id = movie_actor.movie_id AND Actor.actor_id= movie_actor.actor_id ;");
		
		// arraylist füllen
		while (rs.next()) {
			id=rs.getInt(1);
			
			if (id==idlast) //prüfen ob immer noch der gleiche film, wenn ja nur schauspieler hinzufügen, wenn nein Film.
				actors.add(new Actor (rs.getInt(6), rs.getString(7), rs.getString(8)));
		 
			else	{
				movies.add(new Movie(idlast,name,description ,rating , year,actors));
				actors.clear();
				actors.add(new Actor (rs.getInt(6),rs.getString(7), rs.getString(8)));
				}
			idlast=id;	
			name=rs.getString(2);
			description=rs.getString(3);
			rating=rs.getInt(4);
			year=rs.getInt(5);
			
			if(rs.isLast())movies.add(new Movie(idlast,name,description ,rating , year,actors)); //wenn letzter eintrag film hinzufügen
			
		}

		anz=anz+1;
		
		return movies;
		
	}
	
	//Methode zeigt alle filme auf Bildschirm an
	public static void show(ArrayList<Movie> movies) {
		
		int anz=movies.size();
		// bis ans ende der arraylist jeden film ausgeben
		for (int i=0; i<anz;i++) {
			 Movie k = (Movie) movies.get(i);
			 k.print(); //print() methode aus movie.java wird aufgerufen
			 System.out.println("\n\n\t\t\t\t\t____________\n");
		}
		
		
	}
	//Methode sucht nach filname oder Schauspielern die Mitgemacht haben.
	public static void search(ArrayList movies, String name, int typ){
		int anz=movies.size();
		//boolean found =false;
		//ArrayList actors=new ArrayList<Movie>();
		//int actor_nr=0;
		String test;
		
	
		
		
		if(typ==1){
			
			
			for (int i=0; i<anz;i++) { 
				 Movie k=(Movie) movies.get(i);
				 //System.out.println(k.movie_name);
				 test = einlesenscanner.nextLine();
				 System.out.println("name=" +test+" movie="+k.movie_name);
				 if (k.movie_name.equals(test)) {
					
					 System.out.println("OK");
					
				 }else {
					 System.out.println(name);
					 System.out.println("NEIN");
				 }
			}	
			
		}
	
		//wenn suchen nach actor
		/*if (typ==1){			

			for (int i=0; i<anz;i++) { //alle filme durchgehen
				Movie k=(Movie) movies.get(i);
				actors=k.movie_actor;
				actor_nr=actors.size();
				for (int j=0; j<actor_nr;j++) { //die schauspiler des films durchgehen wennn gesuchter dabei film ausgebe.
					Actor l=(Actor) actors.get(j);
					 if (l.actor_name.equals(name)) {
						 System.out.println("\n************************************************");
						 k.print();
						 System.out.println("\n************************************************");
						 found =true;
					 }
				}
			}
			
			
		} else { //sonst filme
			for (int i=0; i<anz;i++) { //list durchgehen bis gefunden wenn gefunden true sonst bleibt false
				 Movie k=(Movie) movies.get(i);
				 if (k.movie_name.equals(name)) {
					 System.out.println("\n************************************************");
					 k.print(); 
					 System.out.println("\n************************************************");
					 found =true;
					 break;
				 }
			}	 
			
			
			
			
			
			
			
		}*/
		//if (found==false)	System.out.println("kein eintrag gefunden"); //wenn nichts gefunden diese meldung
	}
	//Methode fügt filme und schauspileer der DB hinzu
}


Jetzt die ActorKlasse:

Code:
import java.sql.ResultSet;
import java.sql.Statement;

public class Actor { //Klasse autor Speichert die Autoren als objekt
	String actor_name, actor_vorname, ganzername;
	int actor_id;
	
	public Actor(int actor_id, String name, String prename){
		actor_name=name;
		actor_vorname= prename;
		ganzername = actor_vorname+" "+actor_name;
	}
	
	// geändert                                                                                   NEU
	public void print(){ //Methode druckt den Autor aus
		System.out.println(ganzername);
	}

	public String toString() {
		return ganzername;
	}
}


Jetzt die MovieKlasse:

Code:
import java.util.*;

public class Movie { // Speichert die Filme als Objekt
	int movie_id;
	String movie_name;
	String movie_description; 
	int movie_rating;
	int movie_year;
	ArrayList movie_actor;
	//Actor movie_actor;
	
	public Movie(int id, String name, String description, int rating, int year, ArrayList actor) { //Konstruktor für objekt 
	//public Movie(int id, String name, String description, int rating, int year, Actor actor) {
		movie_id=id;
		movie_name=name;
		movie_description=description;
		movie_rating=rating;
		movie_year=year;
		movie_actor=(ArrayList) actor.clone();
	}
	
	public void print(){ //Gibt wert des Objekts aus.
		String actorname = "", abstand = "";
		StringBuffer actor = new StringBuffer("");
		
		//änderungen vorgenommen, Anzeige der Film auflistung                                                 NEU
		System.out.println("Film ID:\t\t" + movie_id);
		System.out.println("Titel:\t\t\t" + movie_name);
		System.out.println("Beschreibung:\t\t" + movie_description);
		System.out.println("Bewertung:\t\t" + movie_rating);
		System.out.println("Ausgabejahr:\t\t" + movie_year);
		
		int anz= movie_actor.size();
		for (int i=0; anz>i;i++) {
			 Actor k= (Actor) movie_actor.get(i);
			 actorname = k.toString();
			 if (i == 0) abstand = "";
			 else abstand = "\n\t\t\t";
			 actor = actor.append(abstand + actorname);		
		}
		
		System.out.print("Schauspieler:\t\t" + actor);
	}
	
	
}



Jetzt noch die Datenbank Dateien


Create:

CREATE TABLE MOVIE (movie_ID INT PRIMARY KEY,
movie_name CHAR(30),
movie_description CHAR(30),
movie_rating INT,
movie_year INT

);




CREATE TABLE ACTOR (actor_ID INT PRIMARY KEY,
actor_name CHAR(30),
actor_prename CHAR(30)
);




CREATE TABLE MOVIE_ACTOR (movie_ID INT NOT NULL,
actor_ID INT NOT NULL,
FOREIGN KEY (movie_ID) REFERENCES MOVIE (movie_ID),
FOREIGN KEY (actor_ID) REFERENCES ACTOR (actor_ID)
)




und noch die Inserts:



INSERT INTO MOVIE VALUES (1, 'TEST', 'TEST', 2, 1988)
INSERT INTO MOVIE VALUES (2, 'American Gangster', 'gangster movie', 5, 2008)
INSERT INTO MOVIE VALUES (3, 'The departed', 'mafia movie', 1, 2011)
INSERT INTO MOVIE VALUES (4, '2012', 'catastrophe movie', 5, 2012)
INSERT INTO MOVIE VALUES (5, 'Snakes on a plane', 's.jackson will play in it', 4, 2007)
INSERT INTO MOVIE VALUES (6, 'nemo', 'fish movie', 2, 2006)
INSERT INTO MOVIE VALUES (7, 'american pie 3', 'teenie movie', 1, 2005)



INSERT INTO ACTOR VALUES (1, 'Muster', 'Max')
INSERT INTO ACTOR VALUES (2, 'Washington', 'Denzel')
INSERT INTO ACTOR VALUES (3, 'Damon', 'Matt')
INSERT INTO ACTOR VALUES (4, 'DiCaprio', 'Leonardo')
INSERT INTO ACTOR VALUES (5, 'noActor', 'noActor')
INSERT INTO ACTOR VALUES (6, 'animation', 'animation')
INSERT INTO ACTOR VALUES (7, 'Jackson', 'Samuel L.')


INSERT INTO MOVIE_ACTOR VALUES (1, 1)
INSERT INTO MOVIE_ACTOR VALUES (2, 2)
INSERT INTO MOVIE_ACTOR VALUES (3, 3)
INSERT INTO MOVIE_ACTOR VALUES (3, 4)
INSERT INTO MOVIE_ACTOR VALUES (4, 5)
INSERT INTO MOVIE_ACTOR VALUES (5, 7)
INSERT INTO MOVIE_ACTOR VALUES (6, 6)
INSERT INTO MOVIE_ACTOR VALUES (7, 5)
 
Hallo,

also ich hab den Code getestet. Da ich keine Datenbank aufgesetzt habe, habe ich mir einfach eine Liste mit einem Film angelegt.

MovieName = Name
Gesuchter Titel = Name

Ich hab bei der Suche in der if-Anweisung test durch name ersetzt und hab test komplett gelöscht, incl der Eingabe in der Schleife, die immer noch unnötig ist. ;-)
Es hat ohne Probleme funktioniert.

Gruß

Sascha
 
Das Problem habe ich gerade vor etwa 5 minuten gelöst. ;-)

Wenn ich eine Liste mit Filmen angelegt hätte wie du, dann wäre es auch gegangen.
nur habe ich den Debug-modus von Eclipse kennengelernt und sah das die Movie_names so abgespeichert waren:

Bsp.

"Test___________________________"

Sie hatten also alle noch Whitespaces vorhanden, deswegen war die String-Kontrolle auch nie erfolgreich.

Das ganze habe ich dann mit:


Code:
k.movie_name.trim();

gelöst.


Danke trotzdem für die Hilfe.
 
Es hat sich noch eine andere Frage ergeben:

Ich muss noch Junit Tests erstellen und einer davon soll die Datenbankverbindung testen. Ich probierte es mal mit einem SELECT Statement.

Die Klassen die ich dazu erstellt habe und in die "Mainclass" hinzugefügt habe sind:


Code:
public static int selectsql(String sqlstatement){
	    	try {
	            Class.forName("org.hsqldb.jdbcDriver");
	        } catch ( ClassNotFoundException e ) {
	            System.err.println( "There's no JDBC Driver. Please install it!" + e);
	            quit();
	        }
	        finally{
		        try {
		    	Connection sqlcon = DriverManager.getConnection("jdbc:hsqldb:file:C:\\Users\\kiran\\programme\\programmieren\\" +
						  "hsqldb\\data\\rainydays\\rainydays2;shutdown=true", "sa", "");
		        Statement st = sqlcon.createStatement();
		        int select = st.executeUpdate(sqlstatement);
		        st.close();
		        sqlcon.close();
		        return select;
		        
		        } catch (SQLException e){
		            System.out.println("There's an error in your SQL-Statement" + e);
		            quit();
		        }
	        }
			return -1;
	    }
		
		public static void select(String moviename) {
	        
			selectsql("Select" + moviename+" from Movie");
	    }

		public static void quit(){
	    	System.out.println("Good bye! Have a nice day!");
	    	System.exit(0);
	    }


und die Junit TestKlasse:


Code:
import junit.framework.TestCase;


public class Database extends TestCase {

		public void databaseConnect() { 
		
				String moviename = "movie_name";
				assertEquals("select all movies.", Mainclass.selectsql("Select"+moviename+" from Movie"));				
			}

		}


Bei der Ausführung zeigt es mir nun einen Fehler an:


"junit.framework.AssertionFailedError: No Tests found in Database
at junit.framework.TestSuit$1.runTest(TestSuite.java:90)"


Ich habe wirklich keine Ahnung von Junit und habe das erstellte bis jetzt über einige Beispiele im Internet erstellt und weiss nicht wo der Fehler sein könnte.
 
Ok habe es mittlerweile ausführen können aber jetzt bekomme ich den Fehler bei folgendem Testfall


Code:
import org.junit.Test;

import junit.framework.TestCase;


public class Database extends TestCase {
		@Test
		public void testDatabaseConnect() { 
		
				
				assertEquals("select all movies.", Mainclass.selectsql("Select * from Movie;"));				
			}

		}

Folgender Fehler tritt nun auf:

There's an error in your SQL-Statementjava.sql.SQLException: statement does not generate a row count
Good bye! Have a nice day!



Im Internet habe ich nicht viel gefunden darüber, ich weiss auch nicht wieso eine Erstellung einer Reihenanzahl oder was auch immer erstellt werden muss
 
Dein Problem liegt in der Methode Mainclass#selectsql. Du machst da
Java:
int select = st.executeUpdate(sqlstatement);
Da Du aber kein Insert, Update oder Delete, sondern ein Select-Statement hast, müsstest Du
Java:
int select = st.executeQuery(sqlstatement);
machen ...
 
Zurück