# jpmdbc Problem -Beispiel funktioniert nicht



## Woggle (19. Mai 2010)

Hallo,
Ich habe nun angefangen mit jpmdbc zu arbeiten. ALlerdings funktioniert es nicht wirklich. Hier mal mein Code:


```
package Datenbank;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;


public class DBClass {
	
	public static void main(String[] args) throws SQLException {
		
		try 
		{ 
		  Class.forName( "de.root1.jpmdbc.Driver" );  
		   
		  //Properties
		  Properties connProperties = new Properties();
		  connProperties.setProperty("user","***");
		  connProperties.setProperty("password","***");
		  connProperties.setProperty("host","***");
		  connProperties.setProperty("port","3306");
		  
		  //Verbindung
		  Connection con = DriverManager.getConnection("jdbc:jpmdbc:http://ADRESSE/jpmdbc.php?DB731059", connProperties);
		  
		  //Statement
		  Statement statement = con.createStatement();
		  
		  //Abfrage
		  ResultSet rs = statement.executeQuery("SELECT * FROM User");
		  while(rs.next()){
	            System.out.println("name="+rs.getString("NName"));
	      }
		  
		} 
		catch ( ClassNotFoundException e ) { 
			e.printStackTrace(); 
		}
		catch (java.lang.OutOfMemoryError e){
			e.printStackTrace();
		}
	}

}
```

Im Prinzip ist es das Beispiel, das auch auf https://jpmdbc.dev.java.net/ angegeben wird. Wenn ich nun aber das Programm starte, bekomm ich folgende Ausgabe:


```
2147483647
32767
9223372036854775807
1.7976931348623157E308
```

Für die * im Code hab ich die richtigen Daten angegegeben, die Datenbank und die Tabelle existieren und haben Einträge. Auch die PHP Datei ist auf dem Server vorhanden.

Ich kann mir nicht wirklich erklären, wo der Fehler liegt, ich hoffe ihr könnt mir helfen 

Vielen Dank schonmal.
Gruß,
Woggle


----------



## The_S (20. Mai 2010)

Bei mir hat das immer gut funktioniert. Was erwartest du denn dass ausgegeben wird? Wie schaut der Feldinhalt in der DB aus? Von welchem Datentyp ist das Feld in der DB?


----------



## Woggle (20. Mai 2010)

Hi,
Ich habe zum Test eine Tabelle User erstellt und ein paar Namen reingeschrieben. User hat 2 Felder VName und NName (also Vor- und Nachname), beide vom Typ String.

Also erwarte ich die Ausgabe aller eingetragenen Nachnamen:

Erwartete Ausgabe:
name=schneider
name=mustermann

Ich habe schon ne Weile mit dem Java mysql connector gearbeitet, was auch immer funktioniert hat. Im Prinzip ist jpmdbc ja nichts anderes, deshalb verwirrt mich das nun. Mit dem connector ahbe ich aber immer auf eine Kostenlose Datenbank zugegriffen (db4free). Da mir die Datenbank dann aber irgendwann zu langsam wurde hab ich mir einen server bei Strato besorgt, der allerdings keine externen Zugriffe zulässt und bin deshalb auf jpmdbc umgestiegen. Kann das von Strato her ein Problem sein? Meiner Meinung nach eigentlich nicht, da es ja im prinzip nur ein PHP script ist, das auf die Datenbank zugreift.


----------



## The_S (20. Mai 2010)

Und "name=" wird gar nicht ausgegeben???


----------



## Woggle (20. Mai 2010)

Stimmt, das sollte angezeigt werden - tuts aber nicht.

Ich habe gerade mal versucht einen Breakpoint zu setzen (bei Class.forName(...)) und mit dem Debugger durchlaufen zu lassen, allerdings springt der Debugger gar nicht an, d.h. er kommt gar nicht bis dahin. Aber wo kommt dann die Konsolenausgabe her?


----------



## Michael... (20. Mai 2010)

Fang doch mal die SQLException selbs ab, anstatt sie über die static main weiterzureichen.
So bekommst Du Fehler mit der Datenbankkommunikation gar nicht mit.


----------



## Woggle (20. Mai 2010)

Ich habe gerade meine Java SDK nochmal neu installiert und nochmal ein neues Projekt angefangen, wo ich den code mit copy&paste eingefügt habe. Nun bekomme ich folgende ausgabe beim ausführen:


```
****************************************************************
* jPMdbc JDBC Driver v0.1 rev=289 build=200803271412
* http://jpmdbc.dev.java.net
*
* jPMdbc is LGPL software 
* See: <http://www.gnu.org/licenses/lgpl.txt>
*
* (c)2007 by Alexander Christian, alexander.christian@root1.de
****************************************************************

Exception in thread "main" java.sql.SQLException: HeaderErrorNo: 2013 -> ErrorFromPhp: error while trying to establish connection: Lost connection to MySQL server at 'reading initial communication packet', system error: 146
	at de.root1.jpmdbc.network.PhpHandler.readFromPhp(PhpHandler.java:267)
	at de.root1.jpmdbc.network.PhpHandler.executeQuery(PhpHandler.java:206)
	at de.root1.jpmdbc.jdbc.JpmdbcStatement.executeQuery(JpmdbcStatement.java:164)
	at DBClass.main(DBClass.java:31)
ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183):  [../../../src/share/back/util.c:820]
```


----------



## The_S (20. Mai 2010)

Dann wird die MySQL-DB wohl nicht gefunden. Einstellungen noch einmal überprüfen ...


----------



## Woggle (20. Mai 2010)

richtig, hatte ein leerzeichen zuviel 

nunja, jetzt funktionierts. Warum es vorher nciht funktioniert hat weiß ich nicht.

Für Alle die das gleiche problem haben:
Ich habe in Eclipse ein neues Projekt gestartet und dort eine Klasse mit dem Coder erstellt. Außerdem hab ich mein Java SDK neu installiert, dann hat es funktioniert.

Vielen Dank an alle Helfer 

Gruß,
Woggle


----------



## The_S (20. Mai 2010)

Woggle hat gesagt.:


> Ich habe in Eclipse ein neues Projekt gestartet und dort eine Klasse mit dem Coder erstellt.



So sollte man es immer machen.



Woggle hat gesagt.:


> Außerdem hab ich mein Java SDK neu installiert, dann hat es funktioniert.



Daran wird es wohl eher nicht gelegen haben.

Ich vermute eher, dass irgendetwas an deiner Run-Konfiguration falsch war, und du versehentlich ein anderes Programm ausgeführt hast.


----------

