Era un problema di caratteri speciali.

non ho simulato la servlet, ma un semplice main.
All'inizio avevo il tuo stesso problema, ma alla fien l'ho risolto:

codice:
try{
	File file = new File("C:\\files", "prova.txt"); 
	Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "", "");
        Statement stmt = conn.createStatement();
        String path = file.getAbsolutePath().replaceAll("\\\\", "\\\\\\\\");
        String qryIns =  "insert into immagini values(null, '" + file.getName() + "', '" + path + "');";
        stmt.executeUpdate(qryIns);
        stmt.close();
        conn.close(); 
}catch(ClassNotFoundException e){
        e.printStackTrace();
}catch(SQLException e){
        e.printStackTrace();
}
La replace è decisamente bruttina, ma lo "\" è un carattere speciale e indica che dopo di lui c'è un carattere speciale quindi
"\\\\" i primi due sono per indicare di sostituire lo \ ma alla replaceAll deve arrivare \\ perchè anche lei prende il carattere dopo lo \
In pratica se ne pettono quattro per farne arrivare due alla replace che ne interpreterà uno

neanche provo a spiegare "\\\\\\\\" a parole!

ti posto anche lo script di creazione della tabella visto che tu non lo avevi e io l'ho dovuta creare.

Codice PHP:
CREATE TABLE `IMMAGINI` (
`
idINT NOT NULL AUTO_INCREMENT ,
`
nomeVARCHAR250 NOT NULL ,
`
percorsoVARCHAR250 NOT NULL ,
PRIMARY KEY ( `id` ) 
TYPE MYISAM