Java 使用rs(next),但仅在SQLite中获得类型\u FOWARD\u

Java 使用rs(next),但仅在SQLite中获得类型\u FOWARD\u,java,sqlite,jdbc,Java,Sqlite,Jdbc,在简单的CRUDJava程序上成功使用mysql数据库之后,我尝试使用SQLite 使用此驱动程序:我遇到以下错误: java.sql.SQLException: SQLite only supports TYPE_FORWARD_ONLY cursorsException in thread "AWT-EventQueue-0" java.lang.NullPointerException at tes.MainForm.Tampil(MainForm.java:31) mainform.j

在简单的CRUDJava程序上成功使用mysql数据库之后,我尝试使用SQLite 使用此驱动程序:我遇到以下错误:

java.sql.SQLException: SQLite only supports TYPE_FORWARD_ONLY cursorsException in thread "AWT-EventQueue-0" java.lang.NullPointerException
at tes.MainForm.Tampil(MainForm.java:31)
mainform.java:

private void Tampil(){
    try{
        int row = tabel.getRowCount();
        for(int i=0;i<row;i++){
            tabeldata.delete(0, row);
        }
        String sql;
        sql = "SELECT * from asu";
            ResultSet rs = c.script.executeQuery(sql); // line 31

        while(rs.next()){
            DataPegawai d = new DataPegawai();
            d.setNo(rs.getInt("no"));
            d.setNip(rs.getInt("nip"));
            d.setNama(rs.getString("nama"));
            d.setDivisi(rs.getString("divisi"));
            d.setLevel(rs.getInt("level"));
            tabeldata.add(d);
        }
    }catch(SQLException e){
        System.err.print(e);
    }
}
public MainForm() { 
   initComponents();
    c = new DBConnection();
    tabeldata = new TabelData();
    tabel.setModel(tabeldata);
    Tampil();
}     
我想我只使用了rsnext,有没有遗漏什么?

在DBConnection中,不应该指定ResultSet.TYPE\u SCROLL\u INSENSITIVE,而应该指定ResultSet.TYPE\u FORWARD\u,因为SQLite不支持SCROLL INSENSITIVE或SCROLL sensitive

问题不是发生在第31行,而是发生在DBConnection中,您将忽略SQLException,然后继续使用null脚本字段。然后在第31行触发一个NullPointerException


这还不是很清楚,因为1您忽略了SQLException,2使用System.out.print,它不添加换行符。相反,您应该使用printStackTrace。

在哪一行出现错误?抱歉,在更改代码后,我编辑了问题非常感谢您:script=c.createStatementResultSet.TYPE\u SCROLL\u不敏感,ResultSet.CONCUR\u可更新;to:script=c.createStatementResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY;它的作品如《魅力》我真的对这个结果集一无所知,稍后会读的谢谢
public class DBConnection {      
    Connection c = null;
    Statement script; 
    public DBConnection(){
        try{
        Class.forName("org.sqlite.JDBC");
            c = DriverManager.getConnection("jdbc:sqlite:C:/titit2.db");
            script = c.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
            System.out.println("Koneksi Sukses");
        }catch(  SQLException | ClassNotFoundException ex){
            System.err.print(ex);
        }
    }
}