Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pesan kesalahan MySql Connector/J yang tidak jelas - java.sql.SQLException:boo {tanda seru}

Seperti yang dinyatakan dalam pembaruan untuk pertanyaan ini biasanya disebabkan oleh kesalahan penggunaan CallableStatement. Misalnya:

Stored Procedure menggunakan 2 parameter, satu masuk dan satu keluar:

CREATE DEFINER=`example`@`localhost` PROCEDURE `sp_getSensorLocation`(IN in_id VARCHAR(128), OUT loc VARCHAR(128))
BEGIN
SELECT LOCATION INTO loc FROM table.SENSORS
WHERE ID = in_id;
END

tapi pemanggilannya hanya menggunakan 1 :

private String getSensorLocation(String sensorID) {    
    String location = "";
    Connection c = dbr.getConnection();
    String prepStatement = "{ call sp_getSensorLocation(?) } ";
    try {
         callableStatement cs = c.prepareCall(prepStatement);
         cs.setString(1, sensorID);
         ResultSet rs = cs.executeQuery();
         if (rs.next()) {
            location = rs.getString(1);
            }
         } catch (SQLException ex) {
                LOG.error("Error:", ex);
         }        
    dbr.closeConnection(c, rs, cs);
    return location;
}

Ketika kode yang benar adalah:

private String getSensorLocation(String sensorID) {
    String location = "";
    Connection c = dbr.getConnection();
    String prepStatement = "{ call sp_getSensorLocation(?, ?) } ";
    try {
        CallableStatement cs = c.prepareCall(prepStatement);
        cs.setString(1, sensorID);
        cs.execute();
        location = cs.getString(2);            
    } catch (SQLException ex) {
        LOG.error("Error:", ex);
    }
    dbr.closeConnection(c, rs, cs);
    return location;
}

Perhatikan saya juga berubah menjadi cs.execute karena saya tidak mengharapkan hasil yang ditetapkan dan akan memiliki masalah dengan ini juga (contoh diambil dari kode orang lain yang saya perbaiki, kegembiraan -_-)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana model hubungan Persahabatan

  2. Kesalahan MySQL:mysql_fetch_assoc() mengharapkan parameter 1 menjadi sumber daya

  3. Kesalahan MySQL:#1142 - perintah SELECT ditolak untuk pengguna

  4. Apakah ada cara untuk memecahkan masalah yang diketahui di Spring Boot ketika koneksi ke database MySQL dengan zona waktu Eropa Tengah?

  5. Cara paling efisien untuk mendapatkan jumlah baris tabel