# SQL-Query bringt Fehler



## Ocean-Driver (28. Dez 2007)

Hallo,

Das herstellen mit der Datenbank funktioniert problemlos. 
Solange ich keine Ausgabe tätige, funktioniert das auch alles ohne Exceptions.

Ich poste hier einfach mal den Sourcecode:


```
package connect;

import java.sql.*;

public class Connect {

	public static void main(String[] args)throws Exception{

		
		//Treiber laden
		load_driver();
		
		//Connection herstellen und in con refenzieren
		Connection local = connect();

		Statement stmt = local.createStatement();
		
		ResultSet slc_filme = stmt.executeQuery("select * from filme");
		
		
		try {
			System.out.print("Select (filme) " + slc_filme.getString(0));
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			echo("ausnahme");
		}
		
		slc_filme.close();
		stmt.close();
		local.close();
		

		
	}
	
	public static void echo(String ausgabe)
	{
		System.out.println(ausgabe);
	}
	
	public static void load_driver()
	{
		
		
	    try 
		{ 
		   Class.forName("com.mysql.jdbc.Driver").newInstance();
		   echo("Treiber Laden erfolgreich");
		}
		catch (Exception e) 
		{
			echo("Ausnahme ausgelöst " +e.getMessage());
		}
	}
	
	
	public static Connection connect()
	{
		
		try
		{
			String user = "root";
			String pass = "159874";
			Connection con = DriverManager.getConnection("jdbc:mysql://localhost/filmdatenbank", user, pass);
			con.setReadOnly(true);
			echo("Verbindung herstellen erfolgreich!");
			return con;
		}
		catch (Exception e) 
		{
			echo("Verbindung konnte nicht hergestellt werden! " +e.getMessage());
			return null;
		}
		
	}
	
}
```


Wenn ich dann vom Query (slc_filme) den String haben möchte, wird die Exception ausgelöst.



> java.sql.SQLException
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056)
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
> ...




Doch, ich versteh einfach nicht warum?Was ist falsch?


----------



## Guest (28. Dez 2007)

```
ResultSet slc_filme = stmt.executeQuery("select * from filme");
while(slc_filme.next()) {
   System.out.print("Select (filme) " + slc_filme.getString(0));
}
```


----------



## The_S (28. Dez 2007)

Erläuterung:

Dein ResultSet steht am Anfang vor dem 1. Datensatz. Du musst einmal ResultSet#next aufrufen, damit das ResultSet auf den 1. Datensatz zeigt und du mit dessen Daten arbeiten kannst.


----------



## Ocean-Driver (28. Dez 2007)

Hallo,



Ich habe eine Funktion, die führt nen Query aus und gibt zurück obs ein Ergebnis gab oder nicht




```
private static ResultSet select=null;

	public static boolean custom_query(String query) throws Exception 
	{
		try
		{
			select = Datenverwaltung.getInstance().getStmt().executeQuery(query);
		}
		catch(Exception e)
		{
			System.out.println("Custom Query konnte nicht ausgeführt werden:  " +e.getMessage());
			return false;
		}
		
		if((select != null))
		{
			//Gibt True zurück, wenn es eine Rückgabe gibt
			return true;
		}
		else
		{
			return false;
		}
	}
```


Nur, wenn es kein Ergebnis gibt bleibt dann 'select' null?Oder wird er trotzdem initialisiert?[/quote]


----------



## The_S (2. Jan 2008)

wenn select.next() "true" zurückliefert gibt es ein Ergebnis, fall es "false" zurückliefert gibt es keine Treffer.


----------

