任务目标
通过本次课的学习,能够完成对数据库中数据表的增加操作
实现步骤
1.创建JavaBean
在src下创建cn.lctvu.bean包,在bean包中创建User类
public class User {
private int id;
private String username;
private String password;
private String email;
private Date birthday;
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;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
2.创建工具类
由于每次操作数据库时,都需要加载数据库驱动、建立数据库连接以及关闭数据库连接,为了避免代码的重复书写,下面建立一个专门用于数据库相关操作的工具类。
在src下创建一个包cn.lctvu.utils,在包中创建一个封装了上述操作的工具类JDBCUtils,JDBCUtils的具体实现方式如下
public class JDBCUtils {
// 加载驱动,并建立数据库连接
public static Connection getConnection() throws SQLException, ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/jdbc";
String username = "root";
String password = "itcast";
Connection conn = DriverManager.getConnection(url, username,password);
return conn;
}
// 关闭数据库连接,释放资源
public static void release(Statement stmt, Connection conn) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
public static void release(ResultSet rs, Statement stmt, Connection conn){
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
release(stmt, conn);
}
}
3.创建DAO
在src下创建cn.lctvu.dao包,在该包下创建UserDao类
public class UserDao {
// 添加用户的操作
public boolean insert(User user) {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
// 获得数据的连接
conn = JDBCUtils.getConnection();
// 发送SQL语句
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String birthday = sdf.format(user.getBirthday());
String sql = " INSERT INTO users(NAME,PASSWORD,email,birthday) VALUES(?,?,?,?)";
// 获得Statement对象
stmt = conn.prepareStatement(sql);
stmt.setString(1,user.getUsername());
stmt.setString(2,user.getPassword());
stmt.setString(3,user.getEmail());
stmt.setDate(4,new java.sql.Date(user.getBirthday().getTime()));//将java.util.date转为java.sql.data类型
int num = stmt.executeUpdate();
if (num > 0) {
return true;
}
return false;
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return false;
}
}
4.创建测试类
新建cn.lctvu.test包,在该包下创建增加数据的测试类JdbcInsertTest.java
public class JdbcInsertTest{
public static void main(String[] args) {
// 向users表插入一个用户信息
UsersDao ud = new UsersDao();
User user=new User();
user.setId(5);
user.setUsername("hl");
user.setPassword("123");
user.setEmail("hl@sina.com");
user.setBirthday(new Date());
boolean b=ud.insert(user);
System.out.println(b);
}
}
运行测试类,查看结果。