Kesalahan Sintaks SQL di Java

Saya sedang mengembangkan aplikasi dengan Java di netbeans/windows 7. Saya mencoba memasukkan data ke database dengan PreparedStatement menggunakan SQL. Jadi ini kode saya;

private void addInfoActionPerformed(java.awt.event.ActionEvent evt) {                                        
    Connection conn;    
    PreparedStatement pst;
    String url = "jdbc:derby://localhost:1527/records";
    String SQL_INSERT = "INSERT INTO records"+
                "VALUES(?,?,?)";
    String name, surname, number;
    try {
        conn = DriverManager.getConnection(url, "system", "app");
        System.out.println("connected to db");
        pst = conn.prepareStatement(SQL_INSERT);
        name = nameField.getText();
        surname = surnameField.getText();
        number = numberField.getText();
        System.out.println("got data from textfields");
        pst.setString(1, name);
        pst.setString(2, surname);
        pst.setString(3, number);
        System.out.println("variables set");
        pst.executeUpdate();
        System.out.println("sql command executed");
        pst.close();
        conn.close();
    } catch (SQLException ex) {
        Logger.getLogger(addition.class.getName()).log(Level.SEVERE, null, ex);
    }

}  

Tapi saya mendapat kesalahan seperti ini;

java.sql.SQLSyntaxErrorException: Kesalahan sintaksis: Ditemukan "?" pada baris 1, kolom 27.

Nama tabel saya adalah catatan dan memiliki tiga kolom bernama; nama, nama keluarga dan nomor. Seperti yang saya pahami dari baris println, ada masalah dengan baris itu;

pst = conn.prepareStatement(SQL_INSERT);

atau mungkin saya salah membuat string SQL_INSERT dan kode SQL. Saya tidak tahu apa sebenarnya masalahnya.


person Hakan Ali Yasdi    schedule 11.06.2013    source sumber
comment
Kesalahannya adalah kesalahan sintaksis SQL, bukan kesalahan sintaksis Java. Tidak ada yang salah dengan Derby, tapi coba lihat HSQLDB jika Anda suka... akan segera mencapai versi ver. 2.3.0.   -  person scottb    schedule 11.06.2013


Jawaban (1)


Anda kehilangan ruang di dalamnya

String SQL_INSERT = "INSERT INTO records"+
            "VALUES(?,?,?)";

Saat Anda melakukan penggabungan, itu menghasilkan "INSERT INTO recordsVALUES(?,?,?)"

Ubah menjadi

String SQL_INSERT = "INSERT INTO records"+
            " VALUES(?,?,?)";
person Denys Séguret    schedule 11.06.2013