Insert data in MySQL and Java in Eclipse

0

I'm having a lot of problems to successfully insert my program data into the table in my database.

To connect to MySQL , I have this:

import java.sql.*;

public class ConexionBD {

    // Ruta de nuestra base de datos
    private String servidor = "jdbc:mysql://localhost:3306/centralitabd";

    // Nombre de usuario de mysql
    private String username = "root";

    // Clave de usuario de mysql
    private String password = "123456789";

    // Nuestra librería mysql
    private String driver = "com.mysql.jdbc.Driver";

    // Objeto del tipo Connection para crear la conexión
    private Connection con;

    public void Conexion()
    {
        try {
            // Cargar drivers de MySQL
            Class.forName(driver);

            // Establecer la conexion con la base de datos
            con = DriverManager.getConnection(servidor, username, password);

            System.out.println("Conexión realizada a la base de datos con éxito.");
        } catch (ClassNotFoundException | SQLException e) {
            System.out.println("Error!, conexión fallida a la base de datos.");
        }
    }

    public Connection getConnection() {
        return con; // Retorno el objeto Connection
    }

Many say that I use preparedstatement , others say that it is better createstatement , in the end I have not managed to make any work, here my code:

public void Insertar(int ID, String Tipo, String Franja, String NumeroOrigen, String NumeroDestino, int Duracion, Double Precio) {

    // Establecer conexión con la base de datos
    ConexionBD conexion = new ConexionBD();

        // Pasamos el objeto Connection de nuestra clase "ConexionBD" a esta instancia por medio del método getConnection()
        Connection con = conexion.getConnection();

        // Crear sentencia SQL para insertar en la base de datos
        String query = "INSERT INTO llamadas (ID, Tipo, Franja, NumeroOrigen, NumeroDestino, Duracion, Precio) values (?, ?, ?, ?, ?, ?, ?)";

        try {
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery(query);

            rs.setInt       (1, ID);
            rs.setString    (2, Tipo);
            rs.setString    (3, Franja);
            rs.setString    (4, NumeroOrigen);
            rs.setString    (5, NumeroDestino);
            rs.setInt       (6, Duracion);
            rs.setDouble    (7, Precio);

            // Indicamos que comience la actualización de la tabla en nuestra base de datos
            st.executeUpdate();

            // Cerramos las conexiones, en orden inverso a su apertura
            st.close();
            con.close();

            System.out.println("Llamada agregada con éxito a la base de datos.");
        } catch (SQLException e) {
            System.out.println("Error!, la llamada no pudo ser agregada a la base de datos.");
        }
    }

Mark me error in: setInt , setString , executeUpdate , etc.

What am I wrong?

Any help would be welcome.

    
asked by Robert Gomez 25.11.2016 в 20:58
source

1 answer

3

You must use executeUpdate for an insert, delete or update. And executeQuery is used for a query and the ResultSet is only used to retrieve querys information, and you are doing an insert, that is, ResultSet is not going.

This is an example of insert with prepardstatement:

String insertTableSQL = "INSERT INTO DBUSER"
                + "(USER_ID, USERNAME, CREATED_BY, CREATED_DATE) VALUES"
                + "(?,?,?,?)";

        try {
            dbConnection = getDBConnection();
            preparedStatement = dbConnection.prepareStatement(insertTableSQL);

            preparedStatement.setInt(1, 11);
            preparedStatement.setString(2, "mkyong");
            preparedStatement.setString(3, "system");
            preparedStatement.setTimestamp(4, getCurrentTimeStamp());

            // execute insert SQL stetement
            preparedStatement.executeUpdate();

            System.out.println("Record is inserted into DBUSER table!");

        } catch (SQLException e) {

            System.out.println(e.getMessage());

        } 
    
answered by 25.11.2016 / 21:04
source