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) { } } }

) ma quando vado ad inserire effettivamente i valori nel DB derby mi restituisce un sacco di errori SQL tipo:
Rispondi quotando


nella parte scorporata dal resto ho messo gli apici, mentre in quella dentro al programma principale no
e il bello è che non me ne sono accorto malgrado abbia riletto il codice più volte
loool adesso ho un altro problema perchè per sbaglio ho cancellato una porzione di codice che mi servivia, ma quello è un altro discorso ... grazie comunque!
...