2011-05-18 6 views
0

J'ai un léger problème ici. Fondamentalement, je veux créer un pool de connexion à DB en utilisant une classe. Ce pool peut être utilisé par d'autres classes pour exécuter des requêtes. J'ai fait d'autres classes sous-classes de la classe de connexion. voici ce que j'ai jusqu'ici.Java Connexion à DB

la classe Connexion/(connexion Piscine classe)

import java.sql.*; public class connect extends cPool { 
    public static void main(String[] args) { 
     cPool en = new cPool(); //crate an object in the name of cPoll calss 
     Connection conn = null; 
     Object data; 
     data = (connect) conn; 
     en.readinfo(); //call object then method name 
     String userName = "root"; 
      String password = "" + en.paword + "";// hold outside try catch block to get and set 
      String url = "" + en.url + ""; 

     try 
     { 

      Class.forName ("com.mysql.jdbc.Driver").newInstance(); 
      conn = DriverManager.getConnection (url, userName, password); 
      System.out.println ("Database connection established"); 



     } 
     catch (Exception e) 
     { 
      System.err.println ("Cannot connect to database server"); 
      System.err.println("Tried connecting using" + url + userName + password +""); 

     } 
     finally 
     { 

     } 
    }  

}

ici est la Execute classe déclaration

import java.sql.*; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class getProduct extends connect { 
    public static void main(String[] args) { 
     connect cn = new connect(); 
     Connection conn = cn.data; 

     try { 
      Statement stmt = conn.createStatement(); 
      ResultSet rs = stmt.executeQuery("SELECT * FROM My_Table"); 
     } 
     catch (SQLException ex) { 
      Logger.getLogger(getProduct.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     finally 
     { 

     } 
    } 
} 

Je ne peux pas exécuter aucune déclaration. à partir de la 2ème classe, quand je fais, je reçois une erreur avec createStatement(). Il est dit «code source Incompilable - ne peut pas trouver le symbole» Merci beaucoup.

+1

Alors, quel est le problème? Je ne vois pas de question. – duffymo

+0

et quel est le problème? – Fortega

+0

Je ne peux pas exécuter d'instructions. à partir de quand je fais, je reçois une erreur avec createStatement(). Il est dit 'Code source non compilable - impossible de trouver le symbole' – Sunny

Répondre

1

Connexion Pooling est un sujet avancé et à en juger par votre code, je dirais laisser reposer pour le moment et apprendre quelques bases de Java en premier. Alors peut-être que vous devriez utiliser une solution existante à la place:

1

Vous avez des questions.

Je ne recommanderais pas tout cet héritage; extends n'est pas une bonne idée.

getProduct doit être une méthode, pas une classe.

Votre classe getProduct est inutile comme écrit. Vous n'obtenez pas de résultats. Vous ne nettoyez pas les ressources. Ne vous inquiétez pas du regroupement jusqu'à ce que vous puissiez écrire une classe JDBC appropriée.

Quelque chose comme ça (laissé des choses ouvertes pour vous de savoir):

package persistence; 

public class ProductDaoImpl implements ProductDao 
{ 
    private static final String BASE_SELECT = "select * from product "; 

    private Connection connection; 

    public ProductDaoImpl(Connection connection) { this.connection = connection; } 

    public List<Product> find() throws SQLException 
    { 
     List<Product> products = new ArrayList<Product>(); 

     Statement st = null; 
     ResultSet rs = null; 

     try 
     { 
      st = this.connection.createStatement(); 
      rs = st.executeQuery(BASE_SELECT); 
      while (rs.next()) 
      { 
       Product product = new Product(); 
       // map columns into product 
       products.add(product); 
      } 
     } 
     finally 
     { 
      DatabaseUtils.close(rs); 
      DatabaseUtils.close(st); 
     } 

     return products; 
    } 
} 
+0

merci qui a aidé. – Sunny

+0

Votez pour la réponse si cela vous a aidé; Acceptez-le si c'est correct. Je préférerais ça à tes remerciements. – duffymo

+0

Je n'ai pas 5 points de réputation pour le faire ..... – Sunny

0

Je ne sais pas quelle est la question, mais je pense qu'une réponse raisonnable est « ne pas écrire votre propre ». Il y a beaucoup de bonnes options, deux juste mentionnées par Sean (+1). Je vais ajouter mon propre favori: BoneCP.