java mysql 面向对象_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)

3a24d256e829683dd51fe4c2b8622a0f.png

创建实体类(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;

}

@Override

public 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 listUser() {

Connection conn = DBUtil.createConn();

String sql = "select * from user";

PreparedStatement ps = DBUtil.prepare(conn, sql);

List list = new ArrayList();

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 list = userDao.listUser();

for (User u : list) {

System.out.println(u);

}

}

}

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

结束语:

Javase基础部分就到这了,之后会更新 Java的反射、注解、代理、设计模式、jsp、Struts、Hibernate、Spring等内容。

smile.gif相信学完了Javase基础之后,对后面的学习会更加轻松。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值