Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解决连接有空作为值?_Java_Jakarta Ee - Fatal编程技术网

Java 如何解决连接有空作为值?

Java 如何解决连接有空作为值?,java,jakarta-ee,Java,Jakarta Ee,我试图用Java实现一个单例数据库连接。我认为它基本上是正确的,但当我尝试在其他类中使用它时,我总是得到java.lang.NullPointerException 我得到的错误在我的ProduitDaoImpl类中,在我执行连接的PreparedStatement行上;我认为连接被传递为null,但我不知道为什么或者如何修复它 这是我的产品 public class ProduitDaoImpl implements IProduitDao { public List<Pr

我试图用Java实现一个单例数据库连接。我认为它基本上是正确的,但当我尝试在其他类中使用它时,我总是得到java.lang.NullPointerException

我得到的错误在我的ProduitDaoImpl类中,在我执行连接的PreparedStatement行上;我认为连接被传递为null,但我不知道为什么或者如何修复它

这是我的产品

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(连接)
before
PreparedStatement 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;
    }

}