Questo articolo ti mostrerà come usare java.sql.Statement
per eseguire l'inserimento, l'aggiornamento, l'eliminazione e la selezione di comandi SQL DML con esempi.
1. Usa java.sql.Statement.execute(String sql) per eseguire inserisci, aggiorna ed elimina Command.
/* 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. Inserisci e restituisci chiavi generate automaticamente.
Per inserire il comando, usa java.sql.Statement.execute(String sql, int autoGeneratedKeys)
per inserire e restituire il valore della chiave di incremento automatico, in questo esempio è il valore id.
/* 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. Esegui il comando SQL di selezione.
/* 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. InsegnanteDTO.java.
Questa classe viene utilizzata per salvare un record di dati nella tabella dell'insegnante.
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. Codice di esempio completo.
- Questo esempio utilizzerà un database MySQL test e tavolo insegnante , l'insegnante la tabella ha tre colonne, sono id , nome, e e-mail . Per saperne di più, puoi fare riferimento a JDBC Create Table Example Use Statement.
- Puoi creare il tavolo insegnante in phpMyAdmin. Devi aggiungere un nome di colonna è id , il tipo è int, e controlla A_I casella di controllo per aumentare automaticamente.
5.1 Passaggi di codice di esempio:
- Inserisci un record (ciao, [email protected]).
- Inserisci un altro record (ciao1, [email protected]) e restituisci l'ID del record generato automaticamente.
- Aggiorna il nome a jerry utilizza il secondo ID record.
- Interroga tutti i record nell'insegnante tabella.
- Elimina il record quale email è [email protected]
- Elenca tutti i record nel insegnante di nuovo la tabella.
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; } }
Uscita
<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