Jump to content

Recommended Posts

Posted (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 by Baderous
geshi
Posted

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());
		}
Posted (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 by Baderous
geshi

The worst part of censorship is ****

Posted (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 by D3POD

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.