# getConnection mit SQLException



## dfrg (1. Aug 2009)

Hallo zusammen

langsam zweifel ich an meinem Verstand.

Es ist nicht die erste DB-Verbindung, die ich aufsetzen möchte, aber ich habe gerade ein ziemliches Brett vor dem Kopf, wie mir scheint.

Folgende Situation:

Ich möchte zu meinem MySQL-Server eine Verbindung aufbauen, die ich über diese Statements initialisiere :

```
Connection conn;
		String dbLoc=null ;
                dbLoc = "jdbc:mysql://127.0.0.1:3306/testDB" ;
		dbLoc = "jdbc:mysql://127.0.0.1:3306/music" ;
		try
		{
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection
					(dbLoc,"user","userspw");
		 }
		catch(ClassNotFoundException err)
		 {
			 System.out.println("DB-Treiber nicht gefunden!");
			 System.out.println(err);
			 System.out.println(err.getCause());
		 }
		 catch(SQLException err)
		 {
			 System.out.println("Connect nicht möglich");
			 System.out.println(err);
		 }
		 catch (ExceptionInInitializerError err)
		 {
			 System.out.println("Initialisierungsfehler");
			 System.out.println(err.getCause());
			 System.out.println("System.classpath");
			 System.out.println(System.getProperty("java.class.path"));
		 }
		 catch (NoClassDefFoundError err)
		 {
			 System.out.println("Klassendefinition nicht gefunden");
			 System.out.println(err);
		 }
		 finally{}
	}
```

Eingebunden habe ich derzeit den mysql-connector-java-5.1.6 (mit 5.1.8 hab ich die gleichen Probleme).

Beim getConnection Statement wirft er mir sofort den Fehler

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '????????????????' at line 1

Bei anderen (früheren) Projekten lief das einwandfrei. Da ich meine Entwicklungsumgebung neu installiert habe, denke ich, das ich möglicherweise irgendetwas vergessen haben könnte.

Danke für eure Hilfe!


----------



## headgrowe (1. Aug 2009)

vl is das dbloc falsch....hmmm ein ähnlicher fehler kommt bei mir, wenn ich in executeQuery() was falsch schreibe....


----------



## dfrg (1. Aug 2009)

Ich alle möglichen Varianten für DBloc getestet. Falscher Port, andere IP (nicht über Localhost), andere DB auf dem Server...

Jedes mal gibt es eine entsprechende Fehlermeldung (unreachable host bzw. database). Wenn ich einen falschen User oder PW eintrage, gibt es den Hinweis, das die Authorisierung fehlgeschlagen ist.

Gibt es ggf. eine Einstellung auf dem mysql-Server, der mir genauere Details liefert?


----------



## headgrowe (1. Aug 2009)

ich kenne mich mit sqlservern nicht so gut aus...also hab ich einfach xampp(sqldb + php) installiert und da geht alles wunderbar....ohne port ... einfach...also wenn du echt nicht mehr weißt, was dein server hat, dann is des net lösung...


----------



## Michael... (3. Aug 2009)

dfrg hat gesagt.:


> com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '????????????????' at line 1


Das hört sich weniger nach einem Verbindungsproblem, als nach einer fehlerhaften Anfrage an die Datenbank an.


----------



## headgrowe (3. Aug 2009)

trie this! i use it all the time 

```
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/java","root", "");
Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,   ResultSet.CONCUR_UPDATABLE);
ResultSet rs = st.executeQuery("select * from test2");
ResultSetMetaData rsmd = rs.getMetaData();
int nmax = rsmd.getColumnCount();
while( rs.next() )
{               
    for(int i=1 ; i<=nmax ; i++ ){
        System.out.print(rs.getString(i)+"   ");
    }
    System.out.println();
}                   
rs.close();
st.close();
```


----------



## geigenk (4. Aug 2009)

dfrg hat gesagt.:


> ```
> dbLoc = "jdbc:mysql://127.0.0.1:3306/testDB" ;
> dbLoc = "jdbc:mysql://127.0.0.1:3306/music" ;
> ```



Hatte dasselbe Problem, gelöst mit 

```
dbLoc = "jdbc:mysql://127.0.0.1:3306/testDB"+"?useUnicode=yes&characterEncoding=UTF-8";
```

Möglicherweise ist das bei mir aber ein Linux-Problem gewesen, bin mir nicht sicher.


----------



## dfrg (8. Aug 2009)

Vielen Dank für eure Hilfe.

Der letzte Tipp war der Knaller und jetzt bekomme ich eine Verbindung zum SQL Server aufgebaut.


```
dbLoc = "jdbc:mysql://127.0.0.1:3306/testDB"+"?useUnicode=yes&characterEncoding=UTF-8";
```

Damit ist der Thread erfolgreich gelöst. Super! :toll:


----------

