jdbc mysql user_tab_comments_MySQL学习(五)——使用JDBC完成用户表CRUD的操作

通过案例我们发现“获得连接”和“释放资源”两次代码将在之后的增删改查所有功能中都存在,开发中遇到此种情况,将采用工具类的方法进行抽取,从而达到代码的重复利用。

1、使用properties配置文件

开发中获得连接的4个参数(驱动、URL、用户名、密码)通常都存在配置文件中,方便后期维护,程序如果需要更换数据库,只需要修改配置文件即可。

文件要求如下:

1)文件位置:任意,建议在src下

2)文件名称:任意,扩展名为properties

3)文件内容:一行一组数据,格式是“key=value”.

a)key命名自定义,如果是多个单词,习惯使用点分隔。例如:jdbc.driver

b)value值不支持中文,如果需要使用非英文字符,将进行Unicode转换

2、创建配置文件

右击src->new->file命名...

1 driver=com.mysql.jdbc.Driver2 url=jdbc:mysql://localhost:3306/web08?useUnicode=true&characterEncoding=utf8

3 username=root4 password=12345

3.1、加载配置文件:ResourceBundle对象(JDBCUtils_V2.java文件)

1 packagecn.itheima.jdbc;2

3 importjava.sql.Connection;4 importjava.sql.DriverManager;5 importjava.sql.PreparedStatement;6 importjava.sql.ResultSet;7 importjava.sql.SQLException;8 importjava.util.ResourceBundle;9

10 /**

11 * 提供获取连接和释放资源的方法12 *@authorAdministrator13 *14 */

15 public classJDBCUtils_V2 {16 private static String driver; //驱动

17 private static String url; //路径

18 private static String username; //用户名

19 private static String password; //密码

20

21 /*

22 * 静态代码块加载配置文件信息23 */

24 static{25 //1.使用JDK提供的工具类加载properties文件,getBundle()方法只需要填写文件,不加后缀!!!

26 ResourceBundle bundle=ResourceBundle.getBundle("db");27 //2.通过key获得需要的值

28 driver=bundle.getString("driver");29 url=bundle.getString("url");30 username=bundle.getString("username");31 password=bundle.getString("password");32 }33

34 /*

35 * 获取连接方法36 */

37 public staticConnection getConnection(){38 Connection conn=null;39 try{40 //1.注册驱动

41 Class.forName(driver);42 //2.获得连接

43 conn=DriverManager.getConnection(url,username,password);44 } catch(Exception e) {45 e.printStackTrace();46 }47 returnconn;48 }49 /*

50 * 释放资源方法51 */

52 public static voidrelease(Connection conn,PreparedStatement pstmt,ResultSet rs){53 if(rs!=null){54 try{55 rs.close();56 } catch(SQLException e) {57 e.printStackTrace();58 }59 }60 if(pstmt!=null){61 try{62 pstmt.close();63 } catch(SQLException e) {64 e.printStackTrace();65 }66 }67 if(conn!=null){68 try{69 conn.close();70 } catch(SQLException e) {71 e.printStackTrace();72 }73 }74 }75 }

3.2、加载配置文件:Properties对象((JDBCUtils_V3.java文件)可选)

1 packagecn.itheima.jdbc;2

3 importjava.io.IOException;4 importjava.io.InputStream;5 importjava.io.InputStreamReader;6 importjava.sql.Connection;7 importjava.sql.DriverManager;8 importjava.sql.PreparedStatement;9 importjava.sql.ResultSet;10 importjava.sql.SQLException;11 importjava.util.Properties;12 importjava.util.ResourceBundle;13

14 /**

15 * 提供获取连接和释放资源的方法16 *@authorAdministrator17 *18 */

19 public classJDBCUtils_V3 {20 private static String driver; //驱动

21 private static String url; //路径

22 private static String username; //用户名

23 private static String password; //密码

24

25 /*

26 * 静态代码块加载配置文件信息27 */

28 static{29 try{30 //1.通过当前类获得类加载器

31 ClassLoader classLoader=JDBCUtils_V3.class.getClassLoader();32 //2.通过类加载器的方法获得一个输入流

33 InputStream is=classLoader.getResourceAsStream("db.properties");34 //3.创建一个properties对象

35 Properties props=newProperties();36 //4.加载输入流

37 props.load(is);38 //5.获取相关参数的值

39 driver=props.getProperty("driver");40 url=props.getProperty("url");41 username=props.getProperty("username");42 password=props.getProperty("password");43 } catch(IOException e) {44 e.printStackTrace();45 }46 }47 /*

48 * 获取连接方法49 */

50 public staticConnection getConnection(){51 Connection conn=null;52 try{53 //1.注册驱动

54 Class.forName(driver);55 //2.获得连接

56 conn=DriverManager.getConnection(url,username,password);57 } catch(Exception e) {58 e.printStackTrace();59 }60 returnconn;61 }62 /*

63 * 释放资源64 */

65 public static voidrelease(Connection conn,PreparedStatement pstmt,ResultSet rs){66 if(rs!=null){67 try{68 rs.close();69 } catch(SQLException e) {70 e.printStackTrace();71 }72 }73 if(pstmt!=null){74 try{75 pstmt.close();76 } catch(SQLException e) {77 e.printStackTrace();78 }79 }80 if(conn!=null){81 try{82 conn.close();83 } catch(SQLException e) {84 e.printStackTrace();85 }86 }87 }88 }

4、实现CRUD操作(查询和添加使用的JDBCUtils_V2.java、删除和修改使用的是JDBCUtils_V3.java文件)

1 packagecn.itheima.jdbc.test;2

3 importjava.sql.Connection;4 importjava.sql.PreparedStatement;5 importjava.sql.ResultSet;6 importjava.sql.SQLException;7

8 importorg.junit.Test;9

10 importcn.itheima.jdbc.JDBCUtils_V2;11 importcn.itheima.jdbc.JDBCUtils_V3;12

13 /*

14 * 测试工具类15 */

16 public classTestUtils {17 /*

18 * 根据id查询用户信息19 */

20 @Test21 public voidtestFindUserById() {22 Connection conn = null;23 PreparedStatement pstmt = null;24 ResultSet rs = null;25 try{26 //1.获取连接

27 conn =JDBCUtils_V2.getConnection();28 //2.编写sql语句

29 String sql = "select * from tbl_user where uid=?";30 //3.获取执行sql语句对象

31 pstmt =conn.prepareStatement(sql);32 //4.设置参数

33 pstmt.setInt(1, 2);34 //5.执行查询操作

35 rs =pstmt.executeQuery();36 //6.处理结果集

37 while(rs.next()) {38 System.out.println(rs.getString(2) + "----" + rs.getString("upassword"));39 }40 //释放资源放在此处不行滴!

41 } catch(SQLException e) {42 e.printStackTrace();43 } finally{44 //7.释放资源

45 JDBCUtils_V2.release(conn, pstmt, rs);46 }47 }48

49 /*

50 * 添加用户信息方法51 */

52 @Test53 public voidtestAdd(){54 Connection conn=null;55 PreparedStatement pstmt=null;56 try{57 //1.获取连接

58 conn=JDBCUtils_V2.getConnection();59 //2.编写sql语句

60 String sql="insert into tbl_user values(null,?,?)";61 //3.获取执行sql语句对象

62 pstmt=conn.prepareStatement(sql);63 //4.设置参数

64 pstmt.setString(1, "hehe");65 pstmt.setString(2,"789");66 //5.执行插入操作

67 int row=pstmt.executeUpdate();68 if(row>0){69 System.out.print("添加成功!");70 }else{71 System.out.print("添加失败 ");72 }73 }catch(Exception e){74 e.printStackTrace();75 }finally{76 //6.释放资源

77 JDBCUtils_V2.release(conn, pstmt, null);78 }79 }80

81 /*

82 * 根据id删除用户信息83 */

84 @Test85 public voidtestDeleteById(){86 Connection conn = null;87 PreparedStatement pstmt = null;88 ResultSet rs = null;89 try{90 //1.获取连接

91 conn =JDBCUtils_V3.getConnection();92 //2.编写sql语句

93 String sql = "delete from tbl_user where uid=?";94 //3.获取执行sql语句对象

95 pstmt =conn.prepareStatement(sql);96 //4.设置参数

97 pstmt.setInt(1, 4);98 //5.执行删除操作

99 int row=pstmt.executeUpdate();100 if(row>0){101 System.out.print("删除成功!");102 }else{103 System.out.print("删除失败 ");104 }105 }catch(Exception e){106 e.printStackTrace();107 }finally{108 //6.释放资源

109 JDBCUtils_V3.release(conn, pstmt, null);110 }111 }112

113 /*

114 * 根据id更新用户信息115 */

116 @Test117 public voidtestUpdateById(){118 Connection conn = null;119 PreparedStatement pstmt = null;120 ResultSet rs = null;121 try{122 //1.获取连接

123 conn =JDBCUtils_V3.getConnection();124 //2.编写sql语句

125 String sql = "update tbl_user set upassword=? where uid=?";126 //3.获取执行sql语句对象

127 pstmt =conn.prepareStatement(sql);128 //4.设置参数

129 pstmt.setString(1, "233");130 pstmt.setInt(2, 5);131 //5.执行更新操作

132 int row=pstmt.executeUpdate();133 if(row>0){134 System.out.print("更新成功!");135 }else{136 System.out.print("更新失败 ");137 }138 }catch(Exception e){139 e.printStackTrace();140 }finally{141 //6.释放资源

142 JDBCUtils_V3.release(conn, pstmt, null);143 }144 }145 }

查询uid=2的效果如下:

2c20c0c5e710153d3cf9fb10265b2f64.png

添加成功的效果如下:

b24307c2aa5d9f84c23a5e7a2d47cca3.png

删除uid=4的效果如下:

9cb4f6a334d833c9f44cbde6307cbed6.png

更新uid=5的密码为233的效果如下:

1aca88e2a4f9c1c84e6f1e9c260633ff.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用JDBC实现smbms_userCRUD操作的示例代码。在这个示例中,我们假设您已经创建了一个名为smbms的数据库,并且已经为其创建了一个名为smbms_user,它有以下列: - id (int, 主键, 自增长) - user_code (varchar(20), 不可空) - user_name (varchar(20), 不可空) - user_password (varchar(20), 不可空) - gender (int, 不可空) - birthday (date) - phone (varchar(20)) - address (varchar(200)) - user_role (int, 不可空) 首先,我们需要创建一个名为JdbcUtil的类来管理数据库连接,如下所示: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class JdbcUtil { private static final String URL = "jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8"; private static final String USERNAME = "root"; private static final String PASSWORD = "123456"; static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USERNAME, PASSWORD); } public static void close(Connection conn, PreparedStatement ps, ResultSet rs) { try { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } ``` 接下来,我们可以创建一个名为UserDao的类来执行CRUD操作,如下所示: ```java import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class UserDao { public void addUser(User user) { Connection conn = null; PreparedStatement ps = null; try { conn = JdbcUtil.getConnection(); ps = conn.prepareStatement("INSERT INTO smbms_user (user_code, user_name, user_password, gender, birthday, phone, address, user_role) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); ps.setString(1, user.getUserCode()); ps.setString(2, user.getUserName()); ps.setString(3, user.getUserPassword()); ps.setInt(4, user.getGender()); ps.setDate(5, user.getBirthday()); ps.setString(6, user.getPhone()); ps.setString(7, user.getAddress()); ps.setInt(8, user.getUserRole()); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { JdbcUtil.close(conn, ps, null); } } public void updateUser(User user) { Connection conn = null; PreparedStatement ps = null; try { conn = JdbcUtil.getConnection(); ps = conn.prepareStatement("UPDATE smbms_user SET user_code=?, user_name=?, user_password=?, gender=?, birthday=?, phone=?, address=?, user_role=? WHERE id=?"); ps.setString(1, user.getUserCode()); ps.setString(2, user.getUserName()); ps.setString(3, user.getUserPassword()); ps.setInt(4, user.getGender()); ps.setDate(5, user.getBirthday()); ps.setString(6, user.getPhone()); ps.setString(7, user.getAddress()); ps.setInt(8, user.getUserRole()); ps.setInt(9, user.getId()); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { JdbcUtil.close(conn, ps, null); } } public void deleteUser(int id) { Connection conn = null; PreparedStatement ps = null; try { conn = JdbcUtil.getConnection(); ps = conn.prepareStatement("DELETE FROM smbms_user WHERE id=?"); ps.setInt(1, id); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { JdbcUtil.close(conn, ps, null); } } public User getUserById(int id) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; User user = null; try { conn = JdbcUtil.getConnection(); ps = conn.prepareStatement("SELECT * FROM smbms_user WHERE id=?"); ps.setInt(1, id); rs = ps.executeQuery(); if (rs.next()) { user = new User(); user.setId(rs.getInt("id")); user.setUserCode(rs.getString("user_code")); user.setUserName(rs.getString("user_name")); user.setUserPassword(rs.getString("user_password")); user.setGender(rs.getInt("gender")); user.setBirthday(rs.getDate("birthday")); user.setPhone(rs.getString("phone")); user.setAddress(rs.getString("address")); user.setUserRole(rs.getInt("user_role")); } } catch (SQLException e) { e.printStackTrace(); } finally { JdbcUtil.close(conn, ps, rs); } return user; } public List<User> getUserList(String userName) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; List<User> userList = new ArrayList<>(); try { conn = JdbcUtil.getConnection(); StringBuilder sql = new StringBuilder("SELECT * FROM smbms_user"); if (userName != null && !userName.isEmpty()) { sql.append(" WHERE user_name LIKE ?"); } ps = conn.prepareStatement(sql.toString()); if (userName != null && !userName.isEmpty()) { ps.setString(1, "%" + userName + "%"); } rs = ps.executeQuery(); while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setUserCode(rs.getString("user_code")); user.setUserName(rs.getString("user_name")); user.setUserPassword(rs.getString("user_password")); user.setGender(rs.getInt("gender")); user.setBirthday(rs.getDate("birthday")); user.setPhone(rs.getString("phone")); user.setAddress(rs.getString("address")); user.setUserRole(rs.getInt("user_role")); userList.add(user); } } catch (SQLException e) { e.printStackTrace(); } finally { JdbcUtil.close(conn, ps, rs); } return userList; } } ``` 在上述示例中,我们定义了一个名为UserDao的类,它有以下方法: - addUser(User user):添加一个用户 - updateUser(User user):更新一个用户 - deleteUser(int id):删除一个用户 - getUserById(int id):根据ID获取一个用户 - getUserList(String userName):获取用户,可以通过指定userName参数来过滤结果 最后,我们可以编写一个简单的测试程序来测试UserDao的功能,如下所示: ```java public class UserDaoTest { public static void main(String[] args) { UserDao userDao = new UserDao(); // 添加用户 User user1 = new User(); user1.setUserCode("001"); user1.setUserName("Tom"); user1.setUserPassword("123456"); user1.setGender(1); user1.setBirthday(Date.valueOf("2000-01-01")); user1.setPhone("12345678900"); user1.setAddress("Beijing"); user1.setUserRole(1); userDao.addUser(user1); // 更新用户 User user2 = userDao.getUserById(1); user2.setUserName("Jerry"); userDao.updateUser(user2); // 删除用户 userDao.deleteUser(1); // 获取用户 List<User> userList = userDao.getUserList("J"); for (User user : userList) { System.out.println(user); } } } ``` 在上述示例中,我们创建了一个名为UserDaoTest的类来测试UserDao的功能。我们首先添加了一个名为Tom的用户,然后更新了它的名字为Jerry,然后删除了该用户,最后获取了所有名字中包含字母J的用户

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值