JDBC增删改查示例 - 极悦
首页 课程 师资 教程 报名

JDBC增删改查示例

  • 2022-01-06 10:40:09
  • 1697次 极悦

JDBC 语句示例——插入、删除、更新、选择记录

本文将java.sql.Statement通过示例向您展示如何使用执行插入、更新、删除和选择 SQL DML 命令。

1.使用java.sql.Statement.execute(String sql)运行insert、update和delete命令。

/* 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. 插入和返回自动生成的密钥。

对于insert命令,用于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 数据库test和表老师,老师表有三列,他们是id,name和email。

您可以在 phpMyAdmin 中创建表老师。您需要添加一个名为id的列,类型为int,并选中A_I复选框以使其自动递增。

示例代码步骤:

插入一条记录(你好,hello @dev2qa.com )。

插入另一条记录 (hello1, [email protected] ) 并返回自动生成的记录 ID。

将名称更新为 jerry 使用第二个记录 ID。

查询teacher表中的所有记录。

删除电子邮件为[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

 

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交