Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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 尝试从Mysql库中选择数据时出现NullPointerException_Java_Mysql_Model View Controller_Jcombobox - Fatal编程技术网

Java 尝试从Mysql库中选择数据时出现NullPointerException

Java 尝试从Mysql库中选择数据时出现NullPointerException,java,mysql,model-view-controller,jcombobox,Java,Mysql,Model View Controller,Jcombobox,我有问题。当我尝试从数据库中选择数据时,我看到错误NullPointerException。要连接到数据库,我使用单例模式 单身人士类别: public class Database { private static Database instance = new Database(); private Connection con; private Database() { } public static Database getInstance() { return ins

我有问题。当我尝试从数据库中选择数据时,我看到错误NullPointerException。要连接到数据库,我使用单例模式

单身人士类别:

public class Database {

private static Database instance = new Database();

private Connection con;

private Database() {

}

public static Database getInstance() {
    return instance;
}

public Connection getConnection(){
    return con;
}
public void connect() throws Exception {

    if (con != null)
        return;

    try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        throw new Exception(e);
    }

    String url = String.format("jdbc:mysql://127.0.0.1:3306/newssystem");

    con = DriverManager.getConnection(url, "root","");
}

public void disconnect() {
    if (con != null) {
        try {
            con.close();
        } catch (SQLException e) {
            System.out.println("Nie można zakończyć połączenia");
        }
    }

    con = null;
}

}
类以选择数据: 公共类艺术作品{ 公共ArrayList getArtykul()引发SQLException{

    ArrayList<Artykul> news = new ArrayList<Artykul>();

    Connection conn = Database.getInstance().getConnection();

    String sql = "SELECT id, title, article FROM news";

    Statement pa = conn.createStatement();

    ResultSet results = pa.executeQuery(sql);

    while(results.next()) {                                     
        int id = results.getInt("id");
        String title = results.getString("title");
        String article = results.getString("article");
        Artykul artykul = new Artykul(id, title, article);  
        news.add(artykul);
    }
    results.close();
    pa.close();
    return news;
}
}

如果仔细查看代码,您会发现
connection
对象是在connect方法中初始化的。但该方法从未在代码中调用。因此调用

Connection conn = Database.getInstance().getConnection();
将返回
连接
对象的空实例

Database db = Database.getInstance();
db.connect();
db.getConnection();
这应该能解决你的问题

注意:在理想情况下,您应该使用连接池或 数据源,而不是编写自己的JDBC代码


谢谢你,现在可以了

    Database db;
    db = Database.getInstance();
    db.connect();
    db.getConnection();


    String sql = "SELECT id, title, article FROM news";

    PreparedStatement pa = db.getConnection().prepareStatement(sql);

请发布异常的堆栈跟踪引发NullPointerException的位置?您应该在某处调用
connect()。。。
Database db = Database.getInstance();
db.connect();
db.getConnection();
    Database db;
    db = Database.getInstance();
    db.connect();
    db.getConnection();


    String sql = "SELECT id, title, article FROM news";

    PreparedStatement pa = db.getConnection().prepareStatement(sql);