Den här artikeln visar hur du använder java.sql.Statement
för att exekvera infoga, uppdatera, ta bort och välja SQL DML-kommandon med exempel.
1. Använd java.sql.Statement.execute(String sql) för att köra kommandot infoga, uppdatera och ta bort.
/* 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. Infoga och returnera automatiskt genererade nycklar.
För insert-kommando, använd java.sql.Statement.execute(String sql, int autoGeneratedKeys)
för att infoga och returnera värdet för den automatiska ökningsnyckeln är det id-värdet i det här exemplet.
/* 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. Utför select SQL-kommandot.
/* 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. TeacherDTO.java.
Den här klassen används för att spara en datapost i lärartabellen.
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. Komplett exempelkod.
- Detta exempel kommer att använda ett MySQL-databas test och tabell lärare , läraren tabellen har tre kolumner, de är id , namn, och e-post . Du kan hänvisa till JDBC Skapa tabell Exempel Använd Statement för att lära dig mer.
- Du kan skapa tabellen lärare i phpMyAdmin. Du måste lägga till ett kolumnnamn som är id , typen är int, och kontrollerar A_I kryssrutan för att få den att öka automatiskt.
5.1 Exempel på kodsteg:
- Infoga en post (hej, [email protected]).
- Infoga en annan post (hello1, [email protected]) och returnera det automatiskt genererade post-id:t.
- Uppdatera namn till jerry använder det andra post-id:t.
- Fråga alla poster i läraren tabell.
- Radera posten som är [email protected]
- Lista alla poster i läraren bord igen.
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; } }
Utdata
<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