Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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[SQLITE_ERROR]SQL错误或缺少数据库(接近“resi”:语法错误)_Java_Sqlite - Fatal编程技术网

Java[SQLITE_ERROR]SQL错误或缺少数据库(接近“resi”:语法错误)

Java[SQLITE_ERROR]SQL错误或缺少数据库(接近“resi”:语法错误),java,sqlite,Java,Sqlite,我在运行程序时遇到了一些问题。它表示“[SQLITE_ERROR]SQL错误或缺少数据库(靠近“resi”:语法错误)”和“ada yang salah:java.SQL.SQLException:ResultSet仅为类型_FORWARD_”。我通过什么了吗 连接代码 public void koneksiDatabase(){ try{ Class.forName("org.sqlite.JDBC"); con = DriverMa

我在运行程序时遇到了一些问题。它表示“[SQLITE_ERROR]SQL错误或缺少数据库(靠近“resi”:语法错误)”和“ada yang salah:java.SQL.SQLException:ResultSet仅为类型_FORWARD_”。我通过什么了吗

连接代码

public void koneksiDatabase(){
    try{
        Class.forName("org.sqlite.JDBC");
        con = DriverManager.getConnection("jdbc:sqlite:C:/Users/sqlite3/cekresi.db","root","");
        System.out.println("Koneksi berhasil!");
    }catch(ClassNotFoundException eclass){
        System.out.println("Koneksi Gagal!");
    }catch(SQLException esql){
        System.out.println(esql.getMessage());
    }
}
保存数据代码

public void simpanData(){
    try {
        String sql = "Insert into data resi = \"" + txtResi.getText() + "\","
                + "nama = \"" + txtNama.getText() + "\","
                + "tujuan = \"" + (String)cmbTujuan.getSelectedItem() + "\","
                + "tarif = \"" + txtTarif.getText() + "\","
                + "berat = \"" + txtBerat.getText() + "\","
                + "jumlah = \"" + txtJumlah.getText() + "\"";
        Statement stmt = con.createStatement();
        stmt.executeUpdate(sql);
        System.out.println("berhasil!");
    }catch (Exception e){
        System.out.println(e);
    }
    tampilDataKeTabel();
}
可显示代码

public void tampilDataKeTabel(){
    ResultSet rs = null;
    try{
        Statement stmt = con.createStatement();
        rs = stmt.executeQuery("select * from data");
        
        ResultSetMetaData meta = rs.getMetaData();
        int col = meta.getColumnCount();
        int baris = 0;
        while (rs.next()){
            baris = rs.getRow();
        }
        dataTable = new String[baris][col];
        int x = 0;
        rs.beforeFirst();
        while(rs.next()){
            dataTable[x][0] = rs.getString("resi");
            dataTable[x][1] = rs.getString("nama");
            dataTable[x][2] = rs.getString("tujuan");
            dataTable[x][3] = rs.getString("tarif");
            dataTable[x][4] = rs.getString("berat");
            dataTable[x][5] = rs.getString("jumlah");
            x++;
        }
        tabelDisplay.setModel(new DefaultTableModel(dataTable,header));
    }catch(Exception e){
        System.err.println("ada yang salah:"+e);
    }
}

insert语句中存在语法问题。语法应为:

INSERT INTO table (column1,column2 ,..)
VALUES( value1, value2 ,...);
因此,insert语句应该类似于:

String sql = "Insert into data(resi,nama,tujuan,tarif,berat,jumlah)
              values(\"" + txtResi.getText() + "\","
                + \"" + txtNama.getText() + "\","
                + \"" + (String)cmbTujuan.getSelectedItem() + "\","
                + \"" + txtTarif.getText() + "\","
                + \"" + txtBerat.getText() + "\","
                + \"" + txtJumlah.getText() + "\")";
此外,显示数据的代码中也存在问题

while (rs.next()){
    baris = rs.getRow();
}
此循环将遍历结果集一次。因此,下一个循环将失败,因为rs已经到达结果的末尾

这导致了异常:
ResultSet的类型仅为“转发”

与其创建2D字符串数组,不如创建一个与db表相对应的类,然后创建一个
列表
。假设将创建名为
Data
的类,则第二个while循环将是:

List<Data> dataList = new ArrayList<>();
while(rs.next()){
    Data data = new Data();
    data.setResi(rs.getString("resi"));
    data.setNama(rs.getString("nama"));
    data.setTujuan(rs.getString("tujuan"));
    data.setTarif(rs.getString("tarif"));
    data.setBerat(rs.getString("berat"));
    data.setJumlah(rs.getString("jumlah"));
    dataList.add(data);
}
List dataList=new ArrayList();
while(rs.next()){
数据=新数据();
data.setResi(rs.getString(“resi”);
data.setNama(rs.getString(“nama”);
data.setTujuan(rs.getString(“tujuan”);
data.setTarif(rs.getString(“tarif”));
data.setBerat(rs.getString(“berat”));
data.setJumlah(rs.getString(“jumlah”);
dataList.add(数据);
}

您的插入语法看起来太离谱了。您确定您的数据库支持该功能吗?您使用的是什么操作系统?您是否尝试过在
sqllite
命令行中执行insert命令?
insert
语句似乎不正确谢谢,先生。这对我很有帮助。但是,上面写着“找不到符号类列表”,你能再帮我一次吗?我对Java语言非常陌生。您导入了
Java.util.List