🍅查看表结构
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
康康单元测试