JavaEE JDBC 增删改查

首页 / ☕Java / 正文

🍅查看表结构

SQL 语句 : show create table 表名;
mysql> show create table si_user;
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                        |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| si_user | CREATE TABLE `si_user` (
  `S_id` int(11) NOT NULL,
  `S_Number` varchar(20) NOT NULL,
  `S_Name` varchar(30) NOT NULL,
  `S_Sex` varchar(10) NOT NULL,
  PRIMARY KEY (`S_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.31 sec)
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| S_id     | int(11)     | NO   | PRI | NULL    |       |
| S_Number | varchar(20) | NO   |     | NULL    |       |
| S_Name   | varchar(30) | NO   |     | NULL    |       |
| S_Sex    | varchar(10) | NO   |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

🍉优化插入

用户编写的 SQL 语句越少越好,所以我们需要对 SQL 语句进行修改。
SQL语句:insert into 表名 values 值

在写语句的时候一定要注意关键字左右加空格

h = st.executeUpdate("insert into " + table + " values (" + value + ")");

JdbcUnit.java

    /**
     * 执行插入语句
     * @param con    数据库连接对象
     * @param table    数据库表名
     * @param value    数据库所插入的值
     * @return        返回影响的行数
     */
    //对插入语句进行修改,方便用户输入
    public static int dbInsert(Connection con, String table, String value){
        
        int h = 0; //返回整型数
        Statement st = null;
        
        try{
        st = con.createStatement();
        h = st.executeUpdate("insert into " + table + " values (" + value + ")");
        
        }catch(Exception e){
            e.printStackTrace();
        }
        
        return h;
    }

单元测试

UnitTest.java

package cc.cnix.ShoppingSystem.run;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.junit.Test;

import cc.cnix.ShoppingSystem.jdbc.JdbcUnit;

public class UnitTest {
        
    //进行数据测试
    //写单元测试,在方法前加 @Test
    @Test    //add junit4
    public void cnix() {
        
        Connection con = JdbcUnit.openDb();    //打开数据库连接
        
        int h = JdbcUnit.dbInsert(con, "si_user", "001, '18140123', 'wriprin', 'male'");    //参见表结构
        System.out.println(h);
    }

}


🍑优化清空

SQL语句:delete from 表名

JdbcUnit.java

    /**
     * 清空全表
     * @param con    连接对象
     * @param table    表名
     * @return        影响行数
     */
    public static int dbDelete(Connection con, String table) {
        
        int h = 0; //返回整型数
        Statement st = null;
        
        try{
        st = con.createStatement();
        h = st.executeUpdate("delete from " + table);
        
        }catch(Exception e){
            e.printStackTrace();
        }
        
        return h;

    }

利用方法重载书写按条件删除的方法

SQL语句:delete from 表名 where 条件
    /**
     * 按条件删除
     * @param con    连接对象
     * @param table    表名
     * @param where    条件
     * @return        返回影响行数
     */
    //方法重载
    public static int dbDelete(Connection con, String table, String where) {
        
        
        int h = 0; //返回整型数
        Statement st = null;
        
        try{
        st = con.createStatement();
        h = st.executeUpdate("delete from " + table + " where " + where);
        
        }catch(Exception e){
            e.printStackTrace();
        }
        
        return h;
    
    }

单元测试

UnitTest.java

eg : sid = 001 and sname like 'wriprin'
    //删除测试
    //不能有两个 @Test,注释掉上面的再添加
    @Test
    public void cnixDelete() {
        
        Connection con = JdbcUnit.openDb();    //打开数据库连接
        
        int h = JdbcUnit.dbDelete(con, "si_user");
        System.out.println(h);
    }
    
    //带有 where 条件的删除测试
    //sid = 001 and sname like 'wriprin'
    public void cnixDeleteWhere() {
        
        Connection con = JdbcUnit.openDb();    //打开数据库连接
        
        int h = JdbcUnit.dbDelete(con, "si_user", " s_id = 001 and s_name like 'wriprin'");
        System.out.println(h);
        
    }

🍋优化更新

SQL语句:update 表名 set 值

JdbcUnit.java

    /**
     * 执行更新语句
     * @param con    连接对象
     * @param table    表名
     * @param value    更新值
     * @param where    条件
     * @return        返回影响的行数
     */
    public static int dbUpdate(Connection con, String table, String value, String where) {

        int h = 0; //返回整型数
        Statement st = null;
        
        try{
        st = con.createStatement();
        h = st.executeUpdate("update " + table + " set " + value + " where " + where);
        
        }catch(Exception e){
            e.printStackTrace();
        }
        
        return h;

    }

单元测试

此处内容需要评论回复后方可阅读


🧊优化查询

SQL语句: select * from 表名 where 条件

JdbcUnit.java

    /**
     * 执行查询
     * @param con    连接对象
     * @param table    表名
     * @param where    条件    
     * @return        返回影响的行数
     */
    //因为是返回数据集格式,所以返回值类型为 ResultSet    需要导入
    // `select * from 表名 where 条件` *号不需要,固定格式即可
    public static ResultSet dbSelect(Connection con, String table, String where) {
        
        ResultSet rs = null;
        Statement st = null;
        
        try{
        st = con.createStatement();
        rs = st.executeQuery("select * from " + table + " where " + where);
        }catch(Exception e){
            e.printStackTrace();
        }
        
        return rs;
    }

全表更新可以用方法重载完成

    /**
     * 查询全表
     * 还是采用方法重载
     * @param con
     * @param table
     * @return
     */
    public static ResultSet dbSelect(Connection con, String table) {
        
        ResultSet rs = null;
        Statement st = null;
        
        try{
        st = con.createStatement();
        rs = st.executeQuery("select * from " + table);
        }catch(Exception e){
            e.printStackTrace();
        }
        
        return rs;
    }

单元测试

UnitTest.java

    //查询测试
    @Test
    public void cnixSelect() {
        
        Connection con = JdbcUnit.openDb();    //打开数据库连接
        
        int h = JdbcUnit.dbDelete(con, "si_user", "s_id = 001 and s_name like 'wriprin'");
        System.out.println(h);
        
        
    }
    

全表查询单元测试

UnitTest.java

    //全表查询
    @Test
    public void cnixSelectWhere() {
        
        Connection con = JdbcUnit.openDb();    //打开数据库连接
        
        int h = JdbcUnit.dbDelete(con, "si_user");
        System.out.println(h);
        
    }
    

🥝关闭

/**
 * 关闭数据库连接
 * @param con    连接对象
 * @param rs    数据集
 * @param st    数据事务
 * @return        返回'真'
 */
public static boolean dbClose(Connection con, ResultSet rs, Statement st) {
    
    //关闭是有顺序的
    
    try{
        if (rs != null) {
            rs = null;
        }
        
        if (st != null){
            st.close();
            st = null;
        }
        
        if (con != null) {
            con.close();
            con = null;
        }
    }catch(Exception e) {
        e.printStackTrace();
    }
    
    return true;

}




单元测试

用删除测试举例

//删除测试
//不能有两个 @Test,注释掉上面的再添加
@Test
public void cnixDelete() {
    
    Connection con = JdbcUnit.openDb();    //打开数据库连接
    
    int h = JdbcUnit.dbDelete(con, "si_user");
    System.out.println(h);
    
    //关闭连接
    //关闭的时候有哪个对象填那个对象,没有的就填 'null'
    JdbcUnit.dbClose(con, null, null);
    
}

您阅读这篇文章共花了:
打赏
评论区
头像
    头像
    没烦恼
    2021年03月23日 18:54
    回复

    康康单元测试

文章目录