Obtengo Java mysql SQL Syntax error pero mi consulta parece normal

Estoy desarrollando una aplicación simple basada en MySQL de Java y durante la inserción de datos en la base de datos obtengo un error de SQL mencionado a continuación.

Aquí está mi código:

public DBConnection() {
    try {
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&useLegacyDatetimeCode=false&serverTimezone=Turkey", "root", "");

        st = con.createStatement();

        System.out.println("CONNECTED!");

    } catch (Exception e) {
        System.out.println("Error  : " + e);
    }
}

public void addCustomer(String name, String surname, String company, String adress, String adressTwo){

  String addQuery = "insert into musteri (name,surname,company,adress,adressTwo) values (?,?,?,?,?)" ;

  try {
      st.executeUpdate(addQuery);
  System.out.println("Data Added");
  } catch (Exception e) {
      System.out.println("Error occured when adding value to database : " + e );
  }
}

Aquí está mi método principal de Java que agrega los datos:

public static void main(String[] args) {
    // TODO code application logic here


    Customers c1 = new Customers();

    c1.setIsim("test");
    c1.setSoyisim("test");
    c1.setSirket("test");
    c1.setAdres("test");
    c1.setIletisim("test");

    DBConnection db = new DBConnection();

    db.addCustomer(c1.isim, c1.soyisim, c1.sirket, c1.adres, c1.iletisim);
}


El error que obtengo es:

Se produjo un error al agregar valor a la base de datos: java.sql.SQLSyntaxErrorException: tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MariaDB para conocer la sintaxis correcta para usar cerca de '' insertar en valores de musteri (ad, soyad, sirket, adres, iletisim) (?,?,?,?,?) '' en la línea 1

Respuesta 1

Estás mezclando declaraciones con declaraciones preparadas. Debe usar una declaración preparada y establecer los valores en ella:

public void addCustomer(String name, String surname, String company, String address, String adressTwo) {
    String addQuery = "insert into musteri (name, surname, company, adress, adressTwo) values (?,?,?,?,?)" ;

    // Shown here for simplicitly.
    // The query could be prepared once and stored in a data member
    try (PreparedStatement ps = con.prepareStatement(addQuery)) {
        ps.setString(1, name);
        ps.setString(2, surname);
        ps.setString(3, company);
        ps.setString(4, address);
        ps.setString(5, addressTwo);
        ps.executeUpdate();
        System.out.println("Data Added");
    } catch (Exception e) {
        System.out.println("Error occured when adding value to database : " + e );
    }
}
Respuesta: 2

Bueno, esto en realidad es de dos partes ... Primero, necesito leer el contenido del archivo, criptándolos en un byte [] escribir el byte [] en un archivo o lo que sea ... Luego, el resultado del # 2 o # 3 entrará en ...

Estoy tratando de automatizar la creación de un proyecto Eclipse Java. Necesito una manera de hacer esto usando la línea de comando. Encontré muchos artículos para esto para CDT, pero no para el de Java. ¿Hay alguna manera de ...

Uso Java 7. Me gustaría extraer el idioma y el país de una Cadena que represente un nombre de archivo de paquete o un nombre de archivo de propiedades. El nombre del archivo no contiene la extensión. Por ejemplo paquete ...

Estoy confundido por una de las preguntas en mi examen de práctica. En Java, la clase Integer extiende la clase abstracta base Número. Ahora, supongamos que tenemos un método con una firma de la siguiente manera: ...