Java 如何解决连接有空作为值?
我试图用Java实现一个单例数据库连接。我认为它基本上是正确的,但当我尝试在其他类中使用它时,我总是得到java.lang.NullPointerException 我得到的错误在我的ProduitDaoImpl类中,在我执行连接的PreparedStatement行上;我认为连接被传递为null,但我不知道为什么或者如何修复它 这是我的产品Java 如何解决连接有空作为值?,java,jakarta-ee,Java,Jakarta Ee,我试图用Java实现一个单例数据库连接。我认为它基本上是正确的,但当我尝试在其他类中使用它时,我总是得到java.lang.NullPointerException 我得到的错误在我的ProduitDaoImpl类中,在我执行连接的PreparedStatement行上;我认为连接被传递为null,但我不知道为什么或者如何修复它 这是我的产品 public class ProduitDaoImpl implements IProduitDao { public List<Pr
public class ProduitDaoImpl implements IProduitDao {
public List<Produit> produitsParMC(String mc) {
List<Produit> produits=new ArrayList<Produit>();
Connection connection=SingletonConnection.getConnection();
try {
PreparedStatement ps=connection.prepareStatement("SELECT * FROM PRODUITS WHERE DESIGNATION LIKE ?");
ps.setString(1, mc);
ResultSet rs=ps.executeQuery();
while(rs.next()){
Produit p=new Produit();
p.setId(rs.getLong("ID"));
p.setDesignation(rs.getString("DESIGNATION"));
p.setPrix(rs.getDouble("Prix"));
p.setQuantite(rs.getInt("QUANTITE"));
produits.add(p);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return produits;
}
}
您的单例实现不正确。(如果您是新手,我认为您是新手,请参阅或任何其他在线指南。) Zlxo,创建一个由所有用户在整个应用程序中共享的单例连接对象,对于各种因素来说都不是一个好方法 不管怎样,请在下面检查您可以在代码中检查的可能事项 singleton类真的正确创建了连接对象吗?
SingletonConnection类中的凭据是否正确 加
System.out.println(连接)
beforePreparedStatement ps=connection.prepareStatement()代码>
在ProduitDaoImpl类中
它是打印空值还是一些字符串
如果为null,则可能需要重新检查用于获取singleton类中的连接对象的连接字符串
如果你觉得这个答案有帮助,一定要投赞成票!:) 请不要反复问同一个问题。这太粗鲁了。
public class SingletonConnection {
private static Connection connection;
//le block static charge la classe en mémoire lors de son appel
static{
try {
Class.forName("com.mysql.cj.jdbc.Driver");
try {
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/db-natal","root","");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection() {
return connection;
}
}