关于其参数的getconnection我有错误吗?

时间:2015-08-13 21:25:48

标签: java sql netbeans

您好,我有编译问题我无法将getconnection()放入能够将我连接到我的数据库的内容。  Netbeans说无法找到关于getconnection()的符号。我不知道我必须为我的问题做些什么。代码必须在Java 1.5中编译

public DeleteOutil(String outil, JButton toEnable) {
        this.outil = outil;
        this.toEnable = toEnable;
    }
    @Override
       public Void doInBackground() {
          PreparedStatement stmt=null;
            String wql = "DELETE  FROM outil WHERE id_outil=?";
            try {
                Connexion con = Connexion.getConnection();
                stmt = con.prepareStatement(wql);

                stmt.setString(1, "outil");
                stmt.executeUpdate();
          }
          catch (Exception e)   
            }
         finally {
       if ( stmt!=null ) {
              // fermer/libérer la ressource
           try {
              stmt.close();
           }
           catch (Exception e) {   
            }
       }
            }  return null;
        }

  **this my connect code:**

    public class Connexion  {
        String urlPilote="com.mysql.jdbc.Driver";//Direction pour charger le pilote
        String urlBasedonnees="jdbc:mysql://localhost:3306/bdboiteoutil";// Direction pour la connexion à la base de données
        Connection conn;
        public Connexion () {
        //On charge  notre pilote
        try{
           Class.forName(urlPilote);
           System.out.println("Le pilote est chargé");
          }
        catch(ClassNotFoundException ex){
          System.out.println(ex);
         }
        // On se connecte à la base de donnée
        try{
            conn=DriverManager.getConnection(urlBasedonnees,"root","");
            System.out.println("La Base de données est chargé");
        }
        catch(SQLException  ex){
            System.out.println(ex);
        }
            }
        Connection ObtenirConnexion(){
             return conn;
         }     
    }

2 个答案:

答案 0 :(得分:0)

请检查您的代码。原样它会因NPE而失败,因为stmt在执行stmt.setString时为空。

答案 1 :(得分:0)

注意:针对Java 5更新了答案,

您不应该需要注册JDBC驱动程序,因为这应该由JDBC驱动程序.jar文件自动完成。

假设Connexion的主要目的是封装数据库连接字符串和凭证,您的代码如下:

public class Connexion {
    private static final String urlBasedonnees = "jdbc:mysql://localhost:3306/bdboiteoutil";

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(urlBasedonnees,"root","");
    }
}

public class DeleteOutil {
    // Constructor here

    public void doInBackground() {
        String sql = "DELETE FROM outil WHERE id_outil = ?";
        try {
            Connection con = Connexion.getConnection();
            try {
                PreparedStatement stmt = con.prepareStatement(sql);
                try {
                    stmt.setString(1, "outil");
                    stmt.executeUpdate();
                } finally {
                    stmt.close();
                }
            } finally {
                con.close();
            }
        } catch (SQLException e) {
            // Handle exception here
        }
    }
}

每次调用doInBackground()时,该代码都会创建与数据库的新连接。由于连接到数据库的操作很慢,您可能希望在调用doInBackground()之间保持数据库连接处于活动状态,在这种情况下,您需要确定维护连接的位置以及连接应保持活动的时间。 / p>