Buondì a tutti,
come forse sapete già (ho creato recentemente un'altra discussione in merito ai database per applicazioni in cui mi è stato "presentato" Derby) sto creando un applicazione che ha bisogno di un database embedded (sostanzialmente deve controllare una pagina web alla ricerca di link e immagazzinare quest'ultimi nel database), ora io ho creato una classe che "dovrebbe" creare il database e inserire i vari valori (sto andando passo per passo, provando ogni nuova funzione per vedere se ci sono problemi ... solo successivamente farò le funzioni per leggere il DB) ma quando vado ad inserire effettivamente i valori nel DB derby mi restituisce un sacco di errori SQL tipo:
ERROR 42X01: Errore di sintassi
Benchè la sintassi sia corretta (provando il tutto "staccato" dal programma principale funziona ...) può influire che la funzione di update viene chiamata dentro ad un ciclo?
Comunque questo è la mia classe:
codice:package it.prova; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.ResultSetMetaData; public class DerbyConnector { private static String dbURL = "jdbc:derby:DB;create=true"; private static String tableName = "prova"; private static Connection conn = null; private static Statement stmt = null; private static PreparedStatement pstmt=null; public static void createDB() { try { Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); conn = DriverManager.getConnection(dbURL); stmt = conn.createStatement(); stmt.execute("create table "+ tableName +"(id int ,title varchar(100),link varchar(150))"); stmt.close(); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException |SQLException e) { e.printStackTrace(); } } public static void createConnection() { try { Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); conn = DriverManager.getConnection(dbURL); } catch (Exception except) { except.printStackTrace(); } } public static void insert(int id, String tit, String link) { try { stmt = conn.createStatement(); stmt.execute("insert into " + tableName + " values (" + id + "," + tit + "," + link +")"); stmt.close(); } catch (SQLException sqlExcept) { sqlExcept.printStackTrace(); } } public static void shutdown() { try { if (stmt != null) { stmt.close(); } if (conn != null) { DriverManager.getConnection(dbURL + ";shutdown=true"); conn.close(); } } catch (SQLException sqlExcept) { } } }