您好,我有编译问题我无法将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;
}
}
答案 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>