java - 出现错误 : java. sql.SQLException:结果集开始之前

标签 java jdbc

我有一个将数据添加到数据库mysql的函数,但我得到了错误:java.sql.SQLException:在结果集开始之前。这是我的代码:

public void tambah() {
        Connection con = Koneksi.getkoneksi();
        int kodeBarcode = Integer.valueOf(TxtBarang.getText());
        String kodeTransaksi = kodetransaksi.getText();
        int quantity = Integer.valueOf(TxtJbeli.getText());
        String tanggal_transaksi = tanggal.getText();
        Integer harga_barang = Integer.valueOf(TxtHargaBarang.getText());
        Integer total_harga = harga_barang * quantity;
        try {
            Statement st = con.createStatement();
            String sql = "select idtransaksi from tbtransaksi where idtransaksi='" + kodeTransaksi + "'";
            ResultSet rs = st.executeQuery(sql);

            // get idbarang
            Statement st_barang = con.createStatement();
            ResultSet rs_barang = st_barang.executeQuery("select idbarang from tbstok where idstok='26'");
            Integer idbarang = rs_barang.getInt("idbarang");
            // cek apa sudah ada di tabel transaksi
            if (rs.next()) { // jika sudah ada
                Statement st2 = con.createStatement();
                // cek apakah ada diskon
                ResultSet rs2 = st2.executeQuery("select idstok, idbarang, warna, ukuran, stok1, harga, harga_d from tbstok where idstok='" + kodeBarcode + "'");
                if (rs2.next() && rs2.getInt("harga_d") == 0) { // jika tidak ada diskon
                    Statement st4 = con.createStatement();
                    st4.executeUpdate("INSERT INTO `tbdetail`(`iddetail`, `idtransaksi`, `tgl_transaksi`, `idbarang`, `idstok`, `jumlah`, `total`) VALUES ( '', '" + kodeTransaksi + "', '" + tanggal_transaksi + "', '" + idbarang + "', '" + kodeBarcode + "', '" + quantity + "', '" + total_harga + "')");
                } else { // jika ada diskon
                    Statement st4 = con.createStatement();
                    st4.executeUpdate("INSERT INTO `tbdetail`(`iddetail`, `idtransaksi`, `tgl_transaksi`, `idbarang`, `idstok`, `jumlah`, `total`) VALUES ( '', '" + kodeTransaksi + "', '" + tanggal_transaksi + "', '" + idbarang + "', '" + kodeBarcode + "', '" + quantity + "', '" + total_harga + "')");
                }
            } else { // jika belum ada
                Statement st2 = con.createStatement();
                // cek apakah ada diskon          
                ResultSet rs2 = st2.executeQuery("select idstok, idbarang, warna, ukuran, stok1, harga, harga_d from tbstok where idstok='26'");
                if (rs2.next() && rs2.getInt("harga_d") == 0) { // jika tidak ada diskon
                    // insert ke tabel transaksi dan tabel detail
                    Statement st3 = con.createStatement();
                    st3.executeUpdate("INSERT INTO `tbtransaksi`(`idtransaksi`, `iduser`, `totalbayar`, `status`, `dibaca`, `tgl_transaksi`) values ('" + kodeTransaksi + "','0','0','proses','N','" + tanggal_transaksi + "')");
                    Statement st4 = con.createStatement();
                    st4.executeUpdate("INSERT INTO `tbdetail`(`iddetail`, `idtransaksi`, `tgl_transaksi`, `idbarang`, `idstok`, `jumlah`, `total`) VALUES ( '', '" + kodeTransaksi + "', '" + tanggal_transaksi + "', '" + idbarang + "', '" + kodeBarcode + "', '" + quantity + "', '" + total_harga + "')");
                }
                if (rs2.next() && rs2.getInt("harga_d") != 0) { // jika ada diskon
                    // insert ke tabel transaksi dan tabel detail                    
                    Statement st3 = con.createStatement();
                    st3.executeUpdate("INSERT INTO `tbtransaksi`(`idtransaksi`, `iduser`, `totalbayar`, `status`, `dibaca`, `tgl_transaksi`) values ('" + kodeTransaksi + "','0','0','proses','N','" + tanggal_transaksi + "')");
                    Statement st4 = con.createStatement();
                    st4.executeUpdate("INSERT INTO `tbdetail`(`iddetail`, `idtransaksi`, `tgl_transaksi`, `idbarang`, `idstok`, `jumlah`, `total`) VALUES ( '', '" + kodeTransaksi + "', '" + tanggal_transaksi + "', '" + idbarang + "', '" + kodeBarcode + "', '" + quantity + "', '" + total_harga + "')");
                }
            }


        } catch (SQLException ex) {
            System.out.println(ex);
        }

    }

我是java新手。所以需要你的帮助。非常感谢

函数获取连接:

 public static Connection getkoneksi() {
        if (koneksi==null) {
            try {
                String url=new String();
                String user=new String();
                String password=new String();
                url="jdbc:mysql://localhost:3306/shafa";
                user="root";
                password="";
                DriverManager.registerDriver(new com.mysql.jdbc.Driver());
                koneksi=DriverManager.getConnection(url,user,password);
                System.out.println("koneksi sukses");
            }catch (SQLException t) {
                System.out.println("Error membuat koneksi");
            }
        }
     return koneksi;
    }

最佳答案

您必须在 Integer idbarang = rs_barang.getInt("idbarang"); 之前调用 rs_barang.next() 将 corsor 设置为结果集的第一行.

      ResultSet rs_barang = st_barang.executeQuery("select idbarang from tbstok where idstok='26'");
       rs_barang.next();
       Integer idbarang = rs_barang.getInt("idbarang");

了解准备好的语句。

关于java - 出现错误 : java. sql.SQLException:结果集开始之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35218115/

相关文章:

java - Swing 绘制程序 - 如何处理选择?

java - JDBI 可选注册

java - 如何使用java访问远程数据库

mysql - 玩Framework Mysql连接,避免数据库未连接时异常

java - 从 XML 流读取命名空间的最佳方法(使用 Java)

java - 为什么这个对象序列化不起作用?

java - 无法在 android 模拟器中安装 apk。应用程序包含 ARM 原生代码

java - 生成给定数字的金字塔?

jdbc - Sqoop导入驱动程序问题:无法加载驱动程序

java - 数据库池 - 在 Spring3 MVC 中连接到 Mysql 数据库