sql >> Base de Datos >  >> RDS >> Mysql

Ejemplos de declaraciones JDBC:insertar, eliminar, actualizar, seleccionar registro

Este artículo le mostrará cómo usar java.sql.Statement para ejecutar insertar, actualizar, eliminar y seleccionar comandos SQL DML con ejemplos.

1. Utilice java.sql.Statement.execute(String sql) para ejecutar el comando de inserción, actualización y eliminación.

/* This method can be used to execute insert, update, delete dml command. */
public void executeSql(String ip, int port, String dbName, String userName, String password, String sql)
{
	/* Declare the connection and statement object. */
	Connection conn = null;
	Statement stmt = null;
	try
	{
		/* Get connection object. */
		conn = this.getMySqlConnection(ip, port, dbName, userName, password);
		
		/* Get statement object. */
		stmt = conn.createStatement();
		
		/* The method can execute insert, update and delete dml command. */
		stmt.execute(sql);
		
		System.out.println("Execute sql successfuly, " + sql);
	}catch(Exception ex)
	{
		ex.printStackTrace();
	}finally
	{
		this.closeDBResource(stmt, conn);
	}
}
     

/* Close statement and connection after use, this can avoid resource waste. */
public void closeDBResource(Statement stmt, Connection conn)
{
	try
	{
		if(stmt!=null)
		{
			stmt.close();
			stmt = null;
		}
		
		if(conn!=null)
		{
			conn.close();
			conn = null;
		}
	}catch(Exception ex)
	{
		ex.printStackTrace();
	}
}

2. Insertar y devolver claves generadas automáticamente.

Para el comando de inserción, utilice java.sql.Statement.execute(String sql, int autoGeneratedKeys) para insertar y devolver el valor de la clave de incremento automático, es el valor de identificación en este ejemplo.

/* Execute insert command and return the auto generated record id. */
public int executeInsertSql(String ip, int port, String dbName, String userName, String password, String sql)
{
	int ret = -1;
	/* Declare the connection and statement object. */
	Connection conn = null;
	Statement stmt = null;
	try
	{
		/* Get connection object. */
		conn = this.getMySqlConnection(ip, port, dbName, userName, password);
		
		/* Get statement object. */
		stmt = conn.createStatement();
		
		/* The method can execute insert dml command and return auto generated key values. */
		stmt.execute(sql, Statement.RETURN_GENERATED_KEYS);
		
		ResultSet rs = stmt.getGeneratedKeys();
			
		if(rs.next())
		{
			/* Please note the index start from 1 not 0. */
			ret = rs.getInt(1);
		}			
		
		System.out.println("Execute sql successfuly, " + sql);
	}catch(Exception ex)
	{
		ex.printStackTrace();
	}finally
	{
		this.closeDBResource(stmt, conn);
		return ret;
	}
	
}

3. Ejecute el comando SQL de selección.

/* This method can be used to execute select dml command. */
public List executeSelectSql(String ip, int port, String dbName, String userName, String password, String selectSql)
{
	List ret = new ArrayList();
	/* Declare the connection and statement object. */
	Connection conn = null;
	Statement stmt = null;
	try
	{
		/* Get connection object. */
		conn = this.getMySqlConnection(ip, port, dbName, userName, password);
		
		/* Get statement object. */
		stmt = conn.createStatement();
		
		/* The method can execute select dml command. */
		ResultSet rs = stmt.executeQuery(selectSql);
		
		if(rs!=null)
		{
			while(rs.next())
			{
				int teacherId = rs.getInt("id");
				
				String teacherName = rs.getString("name");
				
				String teahcerEmail = rs.getString("email");
			
				TeacherDTO teacherDto = new TeacherDTO();
				
				teacherDto.setId(teacherId);
				
				teacherDto.setName(teacherName);
				
				teacherDto.setEmail(teahcerEmail);
				
				ret.add(teacherDto);
				
				System.out.println("id = " + teacherDto.getId());
				System.out.println("name = " + teacherDto.getName());
				System.out.println("email = " + teacherDto.getEmail());
				System.out.println("**************************************");
			}
		}
		
		System.out.println("Execute sql successfuly, " + selectSql);
	}catch(Exception ex)
	{
		ex.printStackTrace();
	}finally
	{
		this.closeDBResource(stmt, conn);
		return ret;
	}

}

4. ProfesorDTO.java.

Esta clase se utiliza para guardar un registro de datos en la tabla del profesor.

package com.dev2qa.java.jdbc;

/* This class represent one record in database teacher table. */
public class TeacherDTO {
	
	private int id;
	
	private String name;
	
	private String email;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
}

5. Código de ejemplo completo.

  1. Este ejemplo usará una base de datos MySQL test y mesa profesor , el profesor la tabla tiene tres columnas, son id , nombre, y correo electrónico . Puede consultar la declaración de uso de ejemplo de creación de tabla de JDBC para obtener más información.
  2. Puedes crear la tabla profesor en phpMyAdmin. Debe agregar un nombre de columna es id , el tipo es int, y comprueba el A_I casilla de verificación para que se incremente automáticamente.

5.1 Pasos del código de ejemplo:

  1. Insertar un registro (hola, [email protected]).
  2. Inserte otro registro (hola1, [email protected]) y devuelva el ID de registro generado automáticamente.
  3. Actualizar nombre a jerry usa la segunda identificación de registro.
  4. Consultar todos los registros en el profesor mesa.
  5. Eliminar registro cuyo correo electrónico es [email protected]
  6. Lista de todos los registros en el profesor mesa de nuevo.
public static void main(String[] args) {
		
	/* Below are db connection required data. */
	String ip = "localhost";
	int port = 3306;
	String dbName = "test";
	String userName = "root";
	String password = "";
	
	/* Create an instance. */
	JDBCStatementExample jdbcStatementExample = new JDBCStatementExample();
	
	/* Insert one record. */
	String insertSql = "insert into teacher(name, email) values('hello','[email protected]')";
	/* Execute the insert command. */
	jdbcStatementExample.executeSql(ip, port, dbName, userName, password, insertSql);
	
	/* Insert another record. */
	insertSql = "insert into teacher(name, email) values('hello1','[email protected]')";
	/* Execute the insert command. */
	int autoGenId = jdbcStatementExample.executeInsertSql(ip, port, dbName, userName, password, insertSql);
	
	/* update record. */
	String updateSql = "update teacher set name = 'jerry' where id = " + autoGenId;
	/* Execute the update command. */
	jdbcStatementExample.executeSql(ip, port, dbName, userName, password, updateSql);
	
	/* select records. */
	String selectSql = "select * from teacher";
	jdbcStatementExample.executeSelectSql(ip, port, dbName, userName, password, selectSql);
	
	String deleteSql = "delete from teacher where email = '[email protected]'";
	jdbcStatementExample.executeSql(ip, port, dbName, userName, password, deleteSql);
	
	/* select records after delete. */
	selectSql = "select * from teacher";
	jdbcStatementExample.executeSelectSql(ip, port, dbName, userName, password, selectSql);
}


/* This method return java.sql.Connection object from MySQL server. */
public Connection getMySqlConnection(String ip, int port, String dbName, String userName, String password)
{
	/* Declare and initialize a sql Connection variable. */
	Connection ret = null;
	
	try
	{
	
		/* Register for mysql jdbc driver class. */
		Class.forName("com.mysql.jdbc.Driver");
		
		/* Create mysql connection url. */
		String mysqlConnUrl = "jdbc:mysql://" + ip + ":" + port + "/" + dbName;
		
		/* Get the mysql Connection object. */
		ret = DriverManager.getConnection(mysqlConnUrl, userName , password);
	}catch(Exception ex)
	{
		ex.printStackTrace();
	}finally
	{
		return ret;
	}
}

Salida

<terminated> JDBCStatementExamp|e [Java Application] C:\Java\jrel.B.O_131\bin\javaw.exe [Aug 28, 2017, 7:59:53 PM]
Execute sql successfuly, insert into teacher(name, email) values('hello','[email protected]')
Execute sql successfuly, insert into teacher(name, email) values('hello1','[email protected]')
Execute sql successfuly, update teacher set name = 'jerry' where id = 22
id = 21
name = hello
email = [email protected]
**************************************
id = 22
name = jerry
email = [email protected]
**************************************
Execute sql successfuly, select * from teacher
Execute sql successfuly, delete from teacher where email = '[email protected]'
id = 21
name = hello
email = [email protected]
**************************************
Execute sql successfuly, select * from teacher