Тази статия ще ви покаже как да използвате java.sql.Statement
за изпълнение на вмъкване, актуализиране, изтриване и избор на SQL DML команди с примери.
1. Използвайте java.sql.Statement.execute(String sql) за да стартирате командата за вмъкване, актуализиране и изтриване.
/* 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. Вмъкване и връщане на автоматично генерирани ключове.
За команда за вмъкване използвайте java.sql.Statement.execute(String sql, int autoGeneratedKeys)
за да вмъкнете и върнете стойността на ключа за автоматично увеличаване, това е стойността на 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. Изпълнете командата select SQL.
/* 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.
Този клас се използва за запазване на един запис от данни в таблицата на учителите.
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. Пълен примерен код.
- Този пример ще използва тест на база данни MySQL и трапезна учителката , учителятът таблицата има три колони, те са id , име, и имейл . Можете да се обърнете към JDBC Създаване на таблица за пример за използване, за да научите повече.
- Можете да създадете таблицата учител в phpMyAdmin. Трябва да добавите име на колона id , типът е int, и проверява A_I квадратче за отметка, за да го направите автоматично да се увеличава.
5.1 Примерни стъпки за код:
- Вмъкнете един запис (здравей, [email protected]).
- Вмъкнете друг запис (hello1, [email protected]) и върнете автоматично генерирания идентификатор на запис.
- Актуализиране на името до jerry използва втория идентификатор на запис.
- Запитване за всички записи в учителя маса.
- Изтрийте запис, чийто имейл е [email protected]
- Избройте всички записи в учителя отново маса.
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; } }
Изход
<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