# Java & MySQL



## Philipp Gérard (29. Apr 2004)

Hallo allerseits!

Habe auf der Suche nach einem guten Java-Forum euch gefunden und hoffe, dass ihr auch mir so gut weiterhelfen könnt, wie den vielen anderen hier .

Zu meinem Problem: Im Rahmen eines Informatikprojektes an meiner Schule wurde ich aufgrund meiner jahrelangen Erfahrung in PHP auserkoren, eine SQL-Klasse zu schreiben, die den Zugriff auf eine MySQL-Datenbank (remote || local) ermöglicht. SQL ist ja kein Problem, aber SQL und Java...nun ja - Neuland für mich.

Ich habe nun mittels 


```
public void Sql(String host, String user, String password, String database){ 
	
		try { 
		
			Class.forName("com.mysql.jdbc.Driver").newInstance(); 
		
		} 
		
		catch (Exception ex) { 
		
			// error 
		
		} 
		
		try { 
		
			Connection conn = DriverManager.getConnection("jdbc:mysql://"+host+"/"+database+"?user="+user+"&password="+password+""); 
		
		} 
		
		catch (SQLException ex) { 
		
			if(error_reporting == true){
		    
			    System.out.println("Konnte keine Datenbankverbindung herstellen!");
			    System.out.println(ex.getMessage()); 
				System.out.println(ex.getSQLState());
				System.out.println(ex.getErrorCode());
			
			}
		
		} 
	
	}
```

Die Basis für eine SQL-Verbindung geschaffen, bin mir nun aber nicht wirklich im Klaren darüber, wie ich ein Query 

a) ausführen lassen kann
b) Ergebnisse zurückgeben (z.B.: SELECT * FROM foo WHERE a = 'b', 5 rows in einem Vector)

und hoffe dass ihr mir entweder hier einen Tipp oder aber einen guten Link zu einer Dokumentation (das Zeugs von mysql.com kenne ich, danke ;-)) geben könnt! Danke im Vorraus!


----------



## bummerland (29. Apr 2004)

guckst du hier: http://www.java-forum.org/de/viewtopic.php?t=1529


----------



## DP (30. Apr 2004)

hinter dem link steht das gleiche wie in seinem code, aber nicht die antwort auf seine frage :roll: 

hier:


```
try
    {
      Statement stmt = null;
      ResultSet rs = null;
      stmt = conn.createStatement();

      String sql = "select * from tabelle";
      rs = stmt.executeQuery(sql);

      while(rs.next())
      {
            rs.getString("spalte_1");
      }

    }
    catch(Exception e)
    {
      logger.error(e);
    }
   }
```

grüße


----------



## Philipp Gérard (30. Apr 2004)

Alles bis auf die while-Schleife habe ich mir schon von mysql.com zusammenklauen können, danke dir!

while(rs.next()) geht also ein Objekt durch und liefert mir jedes Mal die nächste Zeile.
rs.getString(""); gibt mir - hier einen String - einen Spaltenwert meiner Wahl zurück.

Soweit korrekt?

Aus PHP bin ich es gewöhnt, mir multidimensionale assoziative Arrays aufzubauen, die ich dann durchgehen kann um z.B. eine Ausgabe zu generieren oder damit anderen Dinge anzustellen. Wollte ich das machen, müsste ich doch als return-Wert nur rs übergeben, oder? An anderer Stelle kann ich dann die Schleifen etc. weiterverarbeiten. Mal testen...


----------



## rastaman (30. Apr 2004)

Hallo Philipp

Habe genau das gleiche Problem...  Ich bin daran, eine Videothek auf die beine zu stellen... 

Na ja ich habe mir überlegt, dass ich beim "programmstart" die gesamte Datenbank in Vektoren fülle.
Die frage ist nun, ob ich die einzelnen (nehme mal das Beispiel) Kunden als objekt oder als array in den Vector speichern soll.

dazu würde ich dann mit drei klassen arbeiten... 
klasse gui (mainklasse... von hier aus wird alles verwaltet)
klasse sql (so schreiben, dass man einfach ein queri als string eingeben kann, und ein resultset zurückbekommt)
klasse kunde( hier verarbeite ich den resultset zu einem vector, und kann dann auch mit dem Vectorindex dann den nächsten und vorherigen kunden bekommen...)

na ja wir können ja mal codeschnipsel oder so austauschen...

bin aber noch nicht allzuweit... 

gruss
rm


----------



## Philipp Gérard (30. Apr 2004)

Ich darf die SQL-Klasse für eine Kundendatenbank schreiben ;-)
Das was du brauchst habe ich aber schon fast fertig, ich will nur bequemerweise eine Inster- und Update-Funktion schreiben, die mir Queries gleich zusammenbaut (Idiotensicher).

Hier mal mein bisheriger Code, bedien dich ruhig. Kompilieren kann man ihn, benutzt hab ich ihn noch nicht... ;-)

```
import java.sql.*;
import java.util.*; 

/************************************************************** 
* SQL-Klasse                                                  * 
* ----------------------------------------------------------- * 
* Klasse zur Interaktion mit einem entfernten oder lokalen    * 
* MySQL-Server. 											  * 
* ----------------------------------------------------------- * 
* Autor: Philipp Clemens Gérard                               *
* Datum: 29.04.2004 - 20:25h								  *
**************************************************************/ 

public class Sql { 

	private String 		TABLE 			= new String("users");
	 
	private boolean 	error 			= true; 
	private boolean 	error_reporting = false; 
	
	private Connection 	conn;
	

	/**
     * Konstruktur
     * Lädt MySQL-Treiber und stellt Verbindung her
     * @param String host
     * @param String user
     * @param String password
     * @param String database
     */
	public void Sql(String host, String user, String password, String database){ 
	
		try { 
		
			Class.forName("com.mysql.jdbc.Driver").newInstance(); 
		
		} 
		
		catch (Exception ex) { 

			if(error_reporting == true){
			
				System.out.println("Konnte Treibermodul nicht laden!");
				System.out.println(ex.getMessage()); 
				
			}
		
		} 
		
		try { 
		
			Connection conn = DriverManager.getConnection("jdbc:mysql://"+host+"/"+database+"?user="+user+"&password="+password+"");
		
		} 
		
		catch (SQLException ex) { 
		
			if(error_reporting == true){
		    
			    System.out.println("Konnte keine Datenbankverbindung herstellen!");
			    System.out.println(ex.getMessage()); 
				System.out.println(ex.getSQLState());
				System.out.println(ex.getErrorCode());
			
			}
		
		} 
	
	} 
	
	private void query(String query){
		
		Statement stmt = null; 
		ResultSet rs   = null; 
		
		try {
			
		    stmt 	= conn.createStatement(); 
		    rs 		= stmt.executeQuery(query);		    
		
		} 
		
		catch (Exception ex){
			
			if(error_reporting == true){
				
				System.out.println("Datenbankanfrage ist fehlgeschlagen!");
			    System.out.println(ex.getMessage()); 
				
			}
					
		}
			 
	}
	
	public Object getData(String query){
		
		Statement stmt = null; 
		ResultSet rs   = null; 
		
		try {
			
		    stmt 	= conn.createStatement(); 
		    rs 		= stmt.executeQuery(query);
		    rs 		= stmt.getResultSet();
		    
		    return rs;
		    
		
		} 
		
		catch (Exception ex){
			
			if(error_reporting == true){
				
				System.out.println("Datenbankanfrage ist fehlgeschlagen!");
			    System.out.println(ex.getMessage()); 
				
			}
			
			return new Object();
					
		}	
		
	}
	
	public void update(Vector data){ 
	
		// Vector durchgehen, Query generieren.
	
	} 
	
	public void insert(Vector data){ 
	
		// Vector durchgehen, Query generieren.
	
	} 
	
	public void delete(int id){ 
	
		this.query("DELETE FROM "+TABLE+" WHERE id = "+id);
	
	} 
	
	public void setTable(String newtable){
		
		TABLE = newtable;
		
	}
	
	public void setErrorReporting(boolean newLevel){ 
	
		this.error_reporting = newLevel; 
	
	}
	
}

/* z.B:
 *
 * Connection conn = new Sql("foo","foo","foo","foo");
 *
 * if(conn.getData("SELECT * FROM waste_of_time")){
 *
 * 	while(rs.next()){ 
 *		    
 * 		rs.getString("spalte_x"); 
 *   		
 *  }
 *
 * }
 *
 **/
```


----------



## Nino (4. Mai 2004)

Hi, ich versuche mich grad auch an Java+Mysql und bin für diesen schönen Code sehr dankbar. Scheinbar reichen meine Java-Kenntnisse nichtmal aus um mit soviel Hilfe was Zustande zu bringen.

Hier mein Code-raub plus meine eigene Kreation:

```
import java.sql.*; 
import java.util.*; 

/************************************************************** 
* SQL-Klasse                                                  * 
* ----------------------------------------------------------- * 
* Klasse zur Interaktion mit einem entfernten oder lokalen    * 
* MySQL-Server.                                    * 
* ----------------------------------------------------------- * 
* Autor: Philipp Clemens Gérard                               * 
* Datum: 29.04.2004 - 20:25h                          * 
**************************************************************/ 

public class Sql { 

   private boolean    error_reporting = true;
    
   private Connection    conn; 
    


   public void Sql(String host, String user, String password, String database){ 
    
      try { 
       
         Class.forName("com.mysql.jdbc.Driver").newInstance(); 
       
      } 
       
      catch (Exception ex) { 

         if(error_reporting == true){ 
          
            System.out.println("Konnte Treibermodul nicht laden!"); 
            System.out.println(ex.getMessage()); 
             
         } 
       
      } 
       
      try { 
       
         Connection conn = DriverManager.getConnection("jdbc:mysql://"+host+"/"+database+"?user="+user+"&password="+password+""); 
       
      } 
       
      catch (SQLException ex) { 
       
         if(error_reporting == true){ 
          
             System.out.println("Konnte keine Datenbankverbindung herstellen!"); 
             System.out.println(ex.getMessage()); 
            System.out.println(ex.getSQLState()); 
            System.out.println(ex.getErrorCode()); 
          
         } 
       
      } 
    
   } 
    


   public static void main( String args[] ){


	Connection conn = new Sql("MeinHOST","MeinUSER","NATÜRLICHGEHEIM","test");
 	
	System.out.println("Es geht!");
     

  }

    
}
```

Leider kann ich den Code nicht kompilieren. Dann kommt der Fehler:
"Cannot resolve Symbol" und er zeigt auf diese Zeile: 

```
Connection conn = new Sql("MeinHOST","MeinUSER","NATÜRLICHGEHEIM","test");
```

Könnt ihr mir nen kleinen Tipp geben, was ich da noch verändern muss?
(Die Variablen für den Server hab ich natürlich ein bißchen verfälscht )

Danke, nino


----------



## nollario (7. Mai 2004)

Nino hat gesagt.:
			
		

> Hi, ich versuche mich grad auch an Java+Mysql und bin für diesen schönen Code sehr dankbar. Scheinbar reichen meine Java-Kenntnisse nichtmal aus um mit soviel Hilfe was Zustande zu bringen.
> 
> Hier mein Code-raub plus meine eigene Kreation:
> 
> ...



Schalom!


Also:
Die Zeile, die den Fehler beim Komiplieren liefert ist auch nicht so toll...

Mit Connection conn deklarierst Du Dir eine Connection Variable - willst
diesem Connection Objekt dann aber mit dem Konstruktor der Klasse
SQL ein Objekt der Klasse SQL zuweisen... das passt nicht, da SQL
keine Subklasse von Connection ist.

Im Übrigen muss die Signatur des Konstruktors geändert werden. Du
hast dort:

   public void Sql(String host, String user, String password, String database){ 

stehen. Es sind aber keine Rückgabewerte in Konstruktoren erlaubt (also
muss void da weg)...

Ich würde Dir vorschlagen, Du schaust Dir mal den ganzen JDBC (und vielleicht
auch den grundlegenden Java Kram) mal in einem  guten Buch an.

Das Handbuch der Javaprogrammierung von Guido Krüger gibt es z.B.
als kostenlosen Download: www.javabuch.de

Saludos

Christian


----------



## rastaman (7. Mai 2004)

hallo zusammen...  

also meine Sql klasse sieth unterdessen so aus:


```
package videothek2;

import java.sql.*;
import java.util.*;

public class Sql {
    
    Connection conn;
    Statement stmt;
    ResultSet rSet;
    int update;

    
  public boolean connect()
  {
    try {
      Class.forName( "com.mysql.jdbc.Driver" );
    }
    catch ( ClassNotFoundException e ) {
      System.out.println( "Fehler bei ODBC-JDBC-Bridge" + e );
      return false;
    }
    try
    {
      String url = "jdbc:mysql://localhost/videothek";
      conn = DriverManager.getConnection( url, "root", "224181" );
      //conn.close();
    }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );
      return false;
    }
    return true;
  }
   
  public ResultSet abfrage(String query){
    try
    {
      stmt = conn.createStatement();
      String sqlQuery = query;
      rSet = stmt.executeQuery( sqlQuery );
      stmt.close();
     }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );

    }
     return rSet;  
  }
  
  
  public int update(String query){
    try
    {
      stmt = conn.createStatement();
      String sqlUpdate = query;
      update = stmt.executeUpdate( sqlUpdate );
      stmt.close();
     }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );
    }
     return update;  
  }
  
  public boolean trennen(){
    try
    {
      conn.close();
    }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );
      return false;
    }
    return true;   
  }
}
```

Diesen Coede kann man compilieren und es funktioniert auch alles, bis auf das "public ResultSet abfrage(...) "
irgendwie weiss ich nicht, wie ich dieses rSet in einer anderen Klasse ansprechen kann... 

weiss jemand rat?


----------



## rastaman (7. Mai 2004)

habs herausgefunden... falls jemand interesse an den code schnippsel hat soll ers melden...


----------



## Philipp Gérard (9. Mai 2004)

Mein Code funktioniert mittlerweile, ich poste den kommende Woche mal hier (lagert z.Zt. in der Schule).


----------



## rastaman (10. Mai 2004)

hey cool... 

ja ich komme dem ziel auch schrittchenweise näher...


----------



## mageto (16. Mai 2004)

Hi @ all,

mein Problem hat auch mit mySql und Java zu tun wollte aber keinen komplett neuen Thread eröffnen...
Es geht um folgendes..Ich will eine alte Anwendungvon mir bei der eine Access Datenbank als Datenbank fungierte
umstellen auf mySql. Nun habe ich Probleme im Java Code den Driver mittels Class.forName(....); anzugeben.
Immer wenn ich den mysql.Driver angebe (com.mysql.jdbc.Driver) kommt eine Class not found Exception.
Wenn ich aber den sun.jdbc.JDbcOdbcDriver verwende und als DB meine neue mySql DB angebe funktioniert alles 
tadellos....

Was mache ich falsch?? 
In der Verwaltung habe ich meine DB hinzugefügt und als Treiber My SQl Odbc 3.51 Driver...
any idee ?? 
GRüße und Danke
ivan


----------



## rastaman (24. Mai 2004)

@Philipp

wo bleibt dein code? 

@mageto

öm verstehe deine frage irgendwie nicht... aber hast du den MySQL treiber geladen?

gruss


----------



## nollario (25. Mai 2004)

der treiber muss deinem programm zur verfügung stehen (als jar beispielsweise)... und das geschieht in dem der treiber im classpath vorhanden ist -> ClassNotFound: er konnte die Klasse für den Treiber nicht finden.


----------



## Philipp Gérard (28. Mai 2004)

Hier ist mein Code, aber darunter auch überflüssiges Zeugs:


```
import java.sql.*; 
import java.util.*; 

/************************************************************** 
* SQL-Klasse                                                  * 
* ----------------------------------------------------------- * 
* Klasse zur Interaktion mit einem entfernten oder lokalen    * 
* MySQL-Server. 											  * 
* ----------------------------------------------------------- * 
* Autor: Philipp Clemens Gérard                               *
* Datum: 29.04.2004 - 20:25h								  *
**************************************************************/ 

public class Sql { 

	private String 		TABLE 			= new String("Kunden");
	 
	private boolean 	error 			= true; 
	private boolean 	error_reporting = true; 
	
	private Connection 	conn			= null;
		
	// Primärfunktionen
	
	public Sql(String host, String user, String password, String database, String tabelle){ 
	
		try { 
		
			Class.forName("com.mysql.jdbc.Driver").newInstance();
				
			System.out.println("Datenbankverbindung hergestellt!"); 
		
		} 
		
		catch (Exception ex) { 

			if(error_reporting == true){
			
				System.out.println("Konnte Treibermodul nicht laden!");
				System.out.println(ex.getMessage()); 
				
			}
		
		} 
		
		try { 
		
			conn = DriverManager.getConnection("jdbc:mysql://"+host+"/"+database+"?user="+user+"&password="+password+"");
		
			System.out.println("'Connection' wurde hergestellt!");
		
		} 
		
		catch (SQLException ex) { 
		
			if(error_reporting == true){
		    
			    System.out.println("Konnte keine Datenbankverbindung herstellen!");
			    System.out.println(ex.getMessage()); 
				System.out.println(ex.getSQLState());
				System.out.println(ex.getErrorCode());
			
			}
		
		} 

		
		this._setTable(tabelle);
	
	} 
	
	public Connection getConnection(){
		
		return this.conn;
		
	}
	
	public boolean query(String query){
		
		Statement stmt = null; 
		
		try {
			
		    stmt = this.conn.createStatement(); 	    
		
		} 
		
		catch (Exception ex){
			
			if(error_reporting == true){
				
				System.out.println("Datenbankanfrage (Schritt #1) ist fehlgeschlagen!");
			    System.out.println(ex.getMessage()); 
				
			}
			
			return false;
					
		}
		
		try {
			
			stmt.execute(query);	
		    
		    return true;
			
		}
		
		catch (Exception ex){
			
			if(error_reporting == true){
				
				System.out.println("Datenbankanfrage (Schritt #2 [FINAL]) ist fehlgeschlagen!");
			    System.out.println(ex.getMessage()); 
				
			}
			
			return false;
					
		}
			 
	}
	
	public ResultSet getData(String query){
		
		Statement stmt = null; 
		ResultSet rs   = null; 
		
		try {
			
		    stmt 	= conn.createStatement(); 
		    rs 		= stmt.executeQuery(query);
		    rs 		= stmt.getResultSet();
		    
		    return rs;
		    
		
		} 
		
		catch (Exception ex){
			
			if(error_reporting == true){
				
				System.out.println("Datenbankanfrage ist fehlgeschlagen!");
			    System.out.println(ex.getMessage()); 
				
			}
			
			return null;
					
		}	
		
	}
	
	// Get-Funktionen
	
	public ResultSet getKunden(){
		
		return this.getData("SELECT id,Name,Vorname,Strasse,Ort FROM "+TABLE+"");
		
	}
	
	public ResultSet getKunde(int id){
		
		return this.getData("SELECT * FROM "+TABLE+" WHERE id = '"+id+"'");
	
	}
	
	// Auto-Update
	
	public void update(Vector data){ 
	
		String abfrage = new String("UPDATE "+TABLE+" SET ");
		
		for(int x = 0; x < data.lenght(); x++){
			
			
			
		}
		
		this.query(abfrage);
		
		// Vector durchgehen, Query generieren.
	
	} 
	
	// Auto-Insert
	
	public void insert(Vector data){ 
	
		// Vector durchgehen, Query generieren.
	
	} 
	
	// Delete-Funktionen
	
	public void deleteKunde(int id){ 
	
		this.query("DELETE FROM "+TABLE+" WHERE id = "+id);
	
	} 
	
	// Update-Funktionen
	
	public void updateName(int id, String Name){
		
		this.query("UPDATE "+TABLE+" SET Name = '"+Name+"' WHERE id = '"+id+"'");
		
	}
	
	public void updateVorname(int id, String Vorname){
		
		this.query("UPDATE "+TABLE+" SET Vorname = '"+Vorname+"' WHERE id = '"+id+"'");
		
	}	
	
	public void updateFirma(int id, String Firma){
		
		this.query("UPDATE "+TABLE+" SET Firma = '"+Firma+"' WHERE id = '"+id+"'");
		
	}
	
	public void updateTelefon_p(int id, String Telefon){
		
		this.query("UPDATE "+TABLE+" SET Telefon_g = '"+Telefon+"' WHERE id = '"+id+"'");
		
	}
	
	public void updateStrasse(int id, String Strasse){
		
		this.query("UPDATE "+TABLE+" SET Strasse = '"+Strasse+"' WHERE id = '"+id+"'");
		
	}	
	
	public void updateOrt(int id, String Ort){
		
		this.query("UPDATE "+TABLE+" SET Ort = '"+Ort+"' WHERE id = '"+id+"'");
		
	}
	
	public void updatePLZ(int id, String PLZ){
		
		this.query("UPDATE "+TABLE+" SET PLZ = '"+PLZ+"' WHERE id = '"+id+"'");
		
	}
	
	public void updateBundesland(int id, String Bundesland){
		
		this.query("UPDATE "+TABLE+" SET Bundesland = '"+Bundesland+"' WHERE id = '"+id+"'");
		
	}
	
	public void updateLand(int id, String Land){
		
		this.query("UPDATE "+TABLE+" SET Land = '"+Land+"' WHERE id = '"+id+"'");
		
	}
	
	public void updateTelefon_g(int id, String Telefon){
		
		this.query("UPDATE "+TABLE+" SET Telefon_g = '"+Telefon+"' WHERE id = '"+id+"'");
		
	}
	
	public void updateFax(int id, String Fax){
		
		this.query("UPDATE "+TABLE+" SET Fax = '"+Fax+"' WHERE id = '"+id+"'");
		
	}
	
	public void updateEmail(int id, String Email){
		
		this.query("UPDATE "+TABLE+" SET Email = '"+Email+"' WHERE id = '"+id+"'");
		
	}
	
	public void updateNotizen(int id, String Notizen){
		
		this.query("UPDATE "+TABLE+" SET Notizen = '"+Notizen+"' WHERE id = '"+id+"'");
		
	}	
	
	// Sekundärfunktionen
	
	public void _setTable(String newtable){
		
		TABLE = newtable;
		
	}
	
	public void _setErrorReporting(boolean newLevel){ 
	
		this.error_reporting = newLevel; 
	
	}
	
}
```

+ Testdatei:


```
import java.sql.*; 
import java.util.*;
import java.lang.*;

public class Test {
	
	public static void main(String[] args){
		
		Sql foo = new Sql("192.168.0.1","gk12","foo","12_Kunden","Geht nicht");
		
		foo._setTable("Kunden");
		
		if(foo.query("INSERT INTO Kunden (`Name`) VALUES ('Peter')")){
			
			System.out.println("Peter wurde eingetragen!");
			
		}
 		
 		ResultSet rs = foo.getKunden();
 		
 		System.out.println("KUNDENLISTE:");
 		System.out.println("------------------------------");
 		
 		try { 

 		
 			while(rs.next()){ 
 			
 				System.out.println("--- Kunde #"+rs.getInt("id")+": ------------------");
 				System.out.println("Name: "+rs.getString("Name")+""); 
 				System.out.println("Vorname: "+rs.getString("Vorname")+"");
 				System.out.println("Strasse: "+rs.getString("Strasse")+"");
 				System.out.println("Ort: "+rs.getString("Ort")+"");
 				
	 		}
	 		
	 	}
	 	
	 	catch (Exception ex){
	 		
	 		//
	 		
	 	}
	 	
	 	
	 	//System.out.println("Hier ist ein DAU-Test:");
	 	//String Name = foo.getName(12);
	 	//System.out.println(""+Name);
		
	}
	
}
```

Funktioniert defintiv. Nicht vergessen, die Java-Treiber von mysql.com zu installieren. Siehe Readme.


----------



## mike (28. Mai 2004)

Hi.. also das beispiel is super klasse... nur ich check das mit dem Treiber einrichten einfach nicht. Ich hab jetzt da ne zip datei runtergeladen mit folgendem jar file: mysql-connector-java-3.1.1-alpha-bin

des hab ich nun in mein sdk ordner unter jre\lib\ext kopiert.

der rest liegt alles unter sdk ordner.. is ja n haufen zeug dabei @ zip datei

aber irgendwie geht das immer noch nicht oder was muss ich noch machen?

Class.forName("com.mysql.jdbc.Driver").newInstance(); <--- was solln hier rein?

hoff ihr könnt mir helfen !

danke


----------



## mike (28. Mai 2004)

nun hab ich unter umgebungsvariablen das hier eingetragen:

ClassPath: 
C:\j2sdk1.4.2_02\lib;

nun geht nicht mal mehr der Zugriff von der einen auf die andere Datei @ siehe beispiel oben.. des ging ohne ClassPath schon


----------



## nollario (28. Mai 2004)

http://www.java-forum.org/de/viewtopic.php?t=1529

und wenn du den classpath setzt unter windows, dann ...


```
set %CLASSPATH%=%CLASSPATH%;c:\lib; ....
```
[/code][/url]


----------



## mike (28. Mai 2004)

auf dem link war ich doch scho.. aber das hilft mir auch nicht weiter.. ich versteh nicht wie das mir der jar datei ablaufen soll?

der lib pfad ist schon richtig gesetzt... muss ja nicht über die dos shell.. gibt ja auch unter arbeitsplatz eigenschaften umgebungsvariablen was zum pfade setzen )

alle sagen classpath auf jar datei beziehn.. muss doch reichen wenn ichs auf die lib setze..


----------



## mike (28. Mai 2004)

com.mysql.jdbc.Driver <-- ich check das endlich

ich hab nen ordner im SDK verzeichnis der heisst:

mysql-connector-java-3.1.1-alpha

^---- ist der heruntergelande entzippte ordner .. und da drunter gibts com -> mysql -> jdbc -> driver !

aber wo muss nun das rein? des überverzeichnis mysql-connector-java-3.1.1-alpha weg???, sodass alles direkt im SDK verzeichnis liegt?


----------



## nollario (28. Mai 2004)

wenn du es nicht direkt in deine java distribution packst, musst du das jar (das verzeichnis reicht nicht) explizit angeben in deinem classpath....


```
CLASSPATH=c:\bla;.....;c:\verz\mysql.jar
```


----------



## mike (28. Mai 2004)

jippi nr1 geht ) danke

nun hab ich noch probleme auf die daten zuzugreifen.. muss ich noch unter verwaltung an odbc treiber was einstellen oder sowas?


```
String host = new String("localhost");
String database = new String("guestbook");
String user = new String("");
String password = new String("");

Connection conn = DriverManager.getConnection("jdbc:mysql://"+host+"/"+database+"?user="+user+"&password="+password+"");
```

des klappt nicht so ganz.. findet guestbook.tbl_guestbook nicht.. also ich vermute.. ich  muss noch was einstellen (


----------



## mike (28. Mai 2004)

*schäm..   

man sollte tbl_gues"t"book auch so schreiben.. tschuldigung.. wer die rechte hat kann die posts löschen.. also den und den vorgänger..  

sorry.. hätt ich mich nu angemeldet könnt ichs selber deleten.. argh..  :bloed:


----------



## nochmal mike (28. Mai 2004)

gibt dann doch noch ein Problem.. nun hab ich die jar datei im classpath.. 
jetzt funktioniert das obere beispiele aber nicht mehr.. 

ich habe eine datei mit klasse Sql die den Connect macht und den ResultSet liefert..

und dann eine extra datei mit der main methode die eine instanz von Sql macht.. das geht jetzt aber nicht mehr
der meckert mir ständig Sql neu = new Sql("parameter"); an

cannot resolve symbol


----------



## nollario (28. Mai 2004)

der findet die klasse wohl nicht... wenn du den classpath anpasst, musst du das aktuelle working directory mit einschliessen:


```
set %CLASSPATH%=%CLASSPATH%;c:\lib\mysql.jar;.
```

wobei der . für das aktuelle verzeichnis gilt (kannst du natuürlich auch über den arbeitsplatz -> system -> umgebungsvatiabeln machen ;-) )


----------



## mike (28. Mai 2004)

DAANKE !!  :toll: 

nu is das auch alles ein wenig verständlicher.. Danke Danke Danke  :!:


----------

