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