2010-03-26 7 views
0

J'utilise l'EDI NetBeans (6.8). J'ai une classe de DB:Problème de connectivité JDBC

package garits; 
import java.io.Serializable; 
import java.sql.*; 
import java.util.Properties; 
public class DB implements Serializable{ 

    private static final long serialVersionUID = 1L; 
    String dbURL = "jdbc:mysql:///team_project"; 
    String user = "root"; 
    String pwd = "arsenal"; 
    String dbDriver = "com.mysql.jdbc.Driver"; 
    private Connection dbCon; 
    private ResultSet r; 
    private Statement s; 

    public DB() 
     {} 

    public boolean connect() throws ClassNotFoundException,SQLException{ 
      Class.forName(dbDriver); 
      Properties props = new Properties(); 
      props.put(user, "root"); 
      props.put(pwd, "arsenal"); 
      props.put("charSet", "UTF-8"); 
      props.put("lc_ctype", "UTF-8"); 
      dbCon = DriverManager.getConnection(dbURL,props); 
      //dbCon = DriverManager.getConnection(dbURL,user,pwd); 
      return true; 
    } 

    public void close() throws SQLException{ 
     dbCon.close(); 
    if(r!=null) 
    r.close(); 
    if(s!=null) 
    s.close(); 
    } 

    public ResultSet execSQL(String sql) throws SQLException{ 

        s = dbCon.createStatement(); 
        r = s.executeQuery(sql); 
        return (r == null) ? null : r; 
    } 

    public int updateSQL(String sql) throws SQLException{ 
        s = dbCon.createStatement(); 
        int r = s.executeUpdate(sql); 
        return (r == 0) ? 0 : r; 
    } 

    public int updateSQL(String sql, String getID) throws SQLException{ 
     s = dbCon.createStatement(); 
     int autoIncValue = -1; 
     s.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); 
     ResultSet rs = s.getGeneratedKeys(); 
     if (rs.next()) { 
      autoIncValue = rs.getInt(1); 
     } 
     return autoIncValue; 
    } 
} 

Le fichier jar est im ma bibliothèque, mais chaque fois que je tente de me connecter:

private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {            
     String result =""; 
     DB db = new DB(); 
     try{ 
      db.connect(); 
      String query = "Select Role From User_Account Where Username=jTextField1.getText()AND Where Password=jTextField2.getText(); "; 
      ResultSet rs=db.execSQL(query); 
      while(rs.next()) 
      { 
       result = rs.getString("Role"); 

      } 
      if(result.equals("")) 
      { 
       JOptionPane.showMessageDialog(loginButton,"Access denied","Error Message",JOptionPane.ERROR_MESSAGE); 

      } 
      else if(result.equals("Administrator")) 
      { 
       MainPage_Admin admin = new MainPage_Admin(); 
      } 

     } 
      catch(Exception e) 
      { 
      System.out.println("An error has occurred"); 
      } 



    } 

Je reçois une erreur (l'exception est pris) -le nom du la base de données est "team_project" et le mot de passe est "arsenal" - toutes les idées sont appréciées. Je suis nouveau à JDBC.

+1

Il y a un autre problème majeur dans ce code JDBC: il y a des fuites de ressources. Acquérir et les fermer dans la portée la plus courte possible dans un bloc 'try-finally'. Des exemples peuvent être trouvés ici: http://balusc.blogspot.com/2008/07/dao-tutorial-data-layer.html – BalusC

Répondre

1

Première étape: utilisez au moinse.printStackTrace() dans votre catch-block pour obtenir des informations sur l'exception. Sinon, vous devinerez juste.

+0

Je reçois: java.sql.SQLException: Accès refusé pour l'utilisateur '' @ 'localhost' (en utilisant le mot de passe: NON) Pourquoi suis-je refusé l'accès-merci. –

+0

@eli: parce que vous ne définissez pas les propriétés utilisateur/mot de passe correctement. Vérifiez les deux lignes qui placent 'user' et' pwd' dans les 'Properties': c'est faux. –

0

base de données MySQL propriété de connexion url est erroné

jdbc:mysql://localhost:3306/<your database name> 

au lieu de vous donnez

jdbc:mysql:///team_project 

modifier et exécuter le programme et mieux gérer l'exception dans le bloc try/catch au lieu de lancers francs .