Ingresar Datos a la Tabla de una BD

Ingresar Datos a la Tabla de una BD


Hola nuevamente... en esta ocasión les traigo un método en el que se ingresa datos a la tabla de una base de datos, independientemente qué tipo sea...
Como verán el método se llama IngresarDatos, el que recibe como parámetros los datos a ser ingresados a la BD, el mismo retorna un entero que corresponde a la cantidad de registros que se hayan ingresado, eso es para que el que lo haya llamado tenga la precisa de que se ingresaron los datos u ocurrió algún problema (si retorna 0-cero).
********************************************************************************************************
public int IngresarDatos(String dato1, int dato2, String datoN)
{
    try 
    {
            conn = obtConexion();
            String query = "INSERT INTO nombre_de_tabla (column1, column2, columnNN) "
                    + "VALUES (?,?,?)";
            pstmt = conn.prepareStatement(query);
            pstmt.setString(1, dato1);
            pstmt.setInt(2, dato2);
            pstmt.setString(3, datoN);
            
            int ingresado = pstmt.executeUpdate();
            return ingresado;
        }
       catch (SQLException exc) 
       {
            JOptionPane.showMessageDialog(null, exc);
            return 0;
       }
}
************************************************************************************************************
CONN es un objeto de tipo Connection, almacena la conexión que devuelve el método { obtConexion() } que es el que se encarga de gestionar dicha conexión a la BD. 
(Ver: http://infoprogramaciones.blogspot.com/2012/07/probar-conexion-postgresql.html)
Luego creamos nuestra sentencia y la almacenamos en la variable query, en donde nombre_de_tabla representa la tabla en la que queremos insertar los datos; column1, column2, clumnNN son las columnas de la tabla (deber ser idénticas a los nombres de las columnas de la tabla en la BD) se puede referir a cualquier cantidad de columnas de la tabla, a todos o sólo a las columnas not null, (las columnas que son auto-incremento no se especifican en la sentencia). En values se indican los valores que serán ingresados a la tabla, como en nuestro caso los valores variarán cada vez que se llama al método ( le decimos que un objeto PreparedStatement "pstmt" es el que se encargará de esa inserción de valores) escribimos tantos signos "?" como columnas referidas haya, es decir si nos referimos a 10 columnas en nombre_de_tabla (column1, ..., column10) debemos también escribir 10 "?" en values.
El pstmt = conn.prepareStatement(query); es para que se pre-compila la instrucción sql a ejecutarse, ésto hace más flexible y fiable la inserción. Y se encarga de dar el formato correcto a la instrucción sql.
- pstmt.setTipoDeDato (indiceDeColumna, datoAingresar); con el objeto pstmt especificamos el tipo de dato a ser ingresado mediante los métodos set + el sufijo que indica el tipo de dato: setString para cadenas, setInt para enteros, setDate para fechas y así sucesivamente, entre los argumentos se especifica el índice de la columna (en la tabla de la bd) y el valor correspondiente.
Por último se ejecuta la sentencia mediante el método executeUpdate() de la clase PreparedStatement, dicho método retorna un entero que devuelve el número de registros ingresado, el cual es almacenado en la variable ingresados.
Si hubo algún problema, es atrapado por el catch y se imprime un cuadro de mensaje reportando el error, y se devuelve 0-cero para indicar que no se llevó a cabo la inserción.


* Observación importante: como habrán notado tanto el objeto conn (tipo Connection) y pstmt (PreparedStatement) no son declarados en el método! sino que son objetos a nivel clase, es decir son declarados antes del constructor de la clase! Se puede declarar en el método, pero no le daría eficiencia a la conexión y manejo de la BD (que es para el que fue concebido el PreparedStatement).

Comentarios

Entradas populares de este blog

Ejercicios para aprender AutoCAD 3D

Piezas 3D - interesantes

Cómo instalar una fuente de alimentación