D3POD Posted July 17, 2013 at 10:25 PM Report #519153 Posted July 17, 2013 at 10:25 PM (edited) Boas, estou a criar a conexão do meu projecto com a base de dados seguindo alguns tutoriais que fui guardando. O problema é que ao criar a class no netbeans aparece me erros em algumas linhas e não entendo porque. Já revi todos os tutoriais, já fui linha a linha tentar perceber o que se passa e penso que tenha a ver com o import java.sql*; Deixo-vos o código para ver se alguém me consegue ajudar. package psv; import java.sql*; /** * * @author Diogo */ public class conexao { public static Connection abrirconexao() { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); String url = ""; url += "jdbc:mysql://127.0.0.1/dbgestrepare?"; url += "user=root&password=4321"; conn = DriverManager.getConnection(url); System.out.println("Conexão efectuada com sucesso"); } catch (SQLException e) { System.out.println(e.getMessage()); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); } catch (Exception e) { System.out.println(e.getMessage()); } return conn; } public static void fecharconexao(conn) { try { conn.close(); System.out.println("Conexão Encerrada"); } catch (SQLException e) { System.out.println(e.getMessage()); } catch (Exception e) { System.out.println(e.getMessage()); } } } Ainda não experimentei se funciona, pois estou a criar as restantes classes e deparei-me logo na primeira com isto. Será que falta algum passo na conexão? Um abraço Edited July 17, 2013 at 10:33 PM by Baderous geshi
Baderous Posted July 17, 2013 at 10:32 PM Report #519154 Posted July 17, 2013 at 10:32 PM O asterisco do import tem um '.' antes. Ex: java.sql.*
D3POD Posted July 17, 2013 at 10:51 PM Author Report #519156 Posted July 17, 2013 at 10:51 PM Obrigado 😄 estou aqui quase à 2h de volta disto e por causa de um ponto 😞 Já agora... public static void fecharconexao(conn) { try { conn.close(); System.out.println("Conexão Encerrada"); } catch (SQLException e) { System.out.println(e.getMessage()); } catch (Exception e) { System.out.println(e.getMessage()); } está parte do código continua a dar erro... penso que tenha a ver com o local onde estou a colocar o código... consegue me ajudar? Um abraço e mais uma vez obrigado 🙂 //Resolvido 😄 public static void fecharconexao(Connection conn) { try { conn.close(); System.out.println("Conexão Encerrada"); } catch (SQLException e) { System.out.println(e.getMessage()); } catch (Exception e) { System.out.println(e.getMessage()); }
saca-rolhas Posted July 18, 2013 at 10:30 AM Report #519183 Posted July 18, 2013 at 10:30 AM (edited) Boas, sobre Java SQL, os métodos que vão interagir com a DB não estão sobre o modulo de View, ou seja não devem ter esse aspecto e evitarem ter System.out's todas as excepções devem ser lançadas para cima através do throws e serem tratadas dum modo mais user friendly de maneira a que que use a aplicação não leve com stack traces pelo joelho que para o utilizador isso não serve de nada. Queres guardar os stack traces faz ficheiros de log. Voltando ao Java SQL os métodos devem de possuir este aspecto. public class InterfaceDB implements Queries { private String path = ""; private String username = ""; private String password = ""; private Connection conn; private int phase = 1; public final int ALL = 1; public final int URL_ONLY = 2; // instancia a classe InterfaceDB e carrega o driver que pretendes public InterfaceDB(String driver, String path, String username, String password) throws ClassNotFoundException, InstantiationException, IllegalAccessException { this.path = path; this.username = username; this.password = password; Class.forName(driver); } //estabelece a conexão com a base de dados e devolve a conexão public void connectToDB(int phase) throws SQLException { switch (phase) { case ALL: conn = DriverManager.getConnection(path, username, password); break; case URL_ONLY: conn = DriverManager.getConnection(path); break; } } public Connection getConnection() throws SQLException { connectToDB(phase); return conn; } //encerra a conexão public void closeConnection() throws SQLException { conn.close(); } //Get user name public String getUsername(String number) throws SQLException { Connection conn = DriverManager.getConnection(URL_MAIN, USER, PWD); PreparedStatement ps = conn.prepareStatement(GET_USERNAME); ps.setString(1, number); ResultSet rs = ps.executeQuery(); rs.next(); return rs.getString(1); } } Aqui tens um pequeno exemplo de como deves estruturar a tua class que interage com a DB aconselho igualmente que todos os queries que tenha sejam Strings estáticas colocadas numa interface à parte e usar sempre o PreparedStatement e não o Statement para evitar SQL injections. Espero que isto te seja util Edited July 18, 2013 at 11:25 AM by Baderous geshi The worst part of censorship is ****
D3POD Posted July 18, 2013 at 12:40 PM Author Report #519191 Posted July 18, 2013 at 12:40 PM (edited) Boas saca-rolhas, obrigado pela tua resposta 🙂 Vou tentar seguir o que me estás a tentar transmitir, uma vez que ainda sei pouco, vou ter que ler um pouco mais sobre algum código que colocaste, mas obrigado, pois realmente visualmente o código tem outra imagem 🙂 Cumprimentos, Diogo Lamego Edited July 18, 2013 at 12:40 PM by D3POD
saca-rolhas Posted July 25, 2013 at 03:03 PM Report #519947 Posted July 25, 2013 at 03:03 PM (edited) - Edited July 25, 2013 at 03:29 PM by saca-rolhas The worst part of censorship is ****
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now