失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Java学习系列(十九)Java面向对象之数据库编程

Java学习系列(十九)Java面向对象之数据库编程

时间:2023-01-12 09:39:20

相关推荐

Java学习系列(十九)Java面向对象之数据库编程

JDBC(Java Data Base Connectivity:java数据库连接):它定义了一组标准的操作数据库的接口,既然是接口,那它就是一种规范,是Java操作数据库的技术规范。

Java数据库编程有两步常用操作

1.加载(或注册)JDBC驱动程序

Class.forName(“com.mysql.jdbc.Driver”); 推荐这种方式,不会对具体的驱动类产生依赖。

DriverManager.registerDriver(com.mysql.jdbc.Driver); 会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。

2.建立数据库Connection

Connection conn = DriverManager.getConnection(url, user, password);DriverManager是一个驱动管理器,内部有一个驱动注册表(Map结构),可以向其注册多个JDBC驱动。

举例说明1:

/*** @author lhy* @description 数据库工具类*/public class DBUtil {// 创建连接public static Connection createConn() {Connection conn = null;try {// 加载驱动程序Class.forName("com.mysql.jdbc.Driver");// 获取连接(这里用户名为root,密码为空)conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}// 创建回话,获取预处理语句(可以防止sql语句注入)public static PreparedStatement prepare(Connection conn, String sql) {PreparedStatement ps = null;try {ps = conn.prepareStatement(sql);} catch (SQLException e) {e.printStackTrace();}return ps;}// 关闭连接public static void close(Connection conn) {if (conn != null) {try {conn.close();conn = null;} catch (SQLException e) {e.printStackTrace();}}}// 关闭回话public static void close(Statement st) {if (st != null) {try {st.close();st = null;} catch (SQLException e) {e.printStackTrace();}}}// 关闭查询结果集public static void close(ResultSet rs) {if (rs != null) {try {rs.close();rs = null;} catch (SQLException e) {e.printStackTrace();}}}}

下面用户表为例,调用Statement对象的executeQuery()方法或executeUpdate()方法,让DBMS 执行具体的SQL语句,以便对数据执行查询、增、删、改等操作;

我们先建好一张用户表(user,数据库为test)

创建实体类(User):

public class User {private int id;private String username;private String password;public User() {}public User(int id, String username, String password) {this.id = id;this.username = username;this.password = password;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User [id=" + id + ", password=" + password + ", username="+ username + "]";}}

/*** @author lhy* @description 对用户的CRUD相关操作*/public class UserDao {// 添加用户public void add(User u) {Connection conn = DBUtil.createConn();String sql = "insert into user values(null,?,?)";PreparedStatement ps = DBUtil.prepare(conn, sql);try {ps.setString(1, u.getUsername());ps.setString(2, u.getPassword());ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}DBUtil.close(ps);DBUtil.close(conn);}// 根据Id删除用户public void deleteById(int id) {Connection conn = DBUtil.createConn();String sql = "delete from user where id=?";PreparedStatement ps = DBUtil.prepare(conn, sql);try {ps.setInt(1, id);ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}DBUtil.close(ps);DBUtil.close(conn);}// 删除用户public void delete(User u) {deleteById(u.getId());}// 更新用户public void update(User u) {Connection conn = DBUtil.createConn();String sql = "update user set username=?,password=? where id=?";PreparedStatement ps = DBUtil.prepare(conn, sql);try {ps.setString(1, u.getUsername());ps.setString(2, u.getPassword());ps.setInt(3, u.getId());ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}DBUtil.close(ps);DBUtil.close(conn);}// 根据查询用户public User loadById(int id) {Connection conn = DBUtil.createConn();String sql = "select * from user where id=?";PreparedStatement ps = DBUtil.prepare(conn, sql);User user = null;ResultSet rs = null;try {ps.setInt(1, id);rs = ps.executeQuery();if (rs.next()) {user = new User();user.setId(rs.getInt("Id"));user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));}} catch (SQLException e) {e.printStackTrace();}DBUtil.close(rs);DBUtil.close(ps);DBUtil.close(conn);return user;}// 查询所有用户信息public List<User> listUser() {Connection conn = DBUtil.createConn();String sql = "select * from user";PreparedStatement ps = DBUtil.prepare(conn, sql);List<User> list = new ArrayList<User>();ResultSet rs = null;try {rs = ps.executeQuery();while (rs.next()) {User user = new User();user.setId(rs.getInt("Id"));user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));list.add(user);}} catch (SQLException e) {e.printStackTrace();}DBUtil.close(rs);DBUtil.close(ps);DBUtil.close(conn);return list;}}

客户端(测试类):

public class TestUser {public static void main(String[] args) {User user = new User();user.setUsername("张三");user.setPassword("123");UserDao userDao = new UserDao();// userDao.add(user);//添加用户// userDao.deleteById(1);// 删除Id为1的用户// userDao.update(new User(2, "李四", "1234546"));// 更新Id为2的用户信息// System.out.println(userDao.loadById(2)); // 查询Id为2的用户信息// 列出所有的用户List<User> list = userDao.listUser();for (User u : list) {System.out.println(u);}}}

Java的数据库编程比较简单,这里就不再赘述。

结束语

Javase基础部分就到这了,之后会更新 Java的反射、注解、代理、设计模式、jsp、Struts、Hibernate、Spring等内容。相信学完了Javase基础之后,对后面的学习会更加轻松。

如果觉得《Java学习系列(十九)Java面向对象之数据库编程》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。