JDBC从入门到放弃-02:JDBC的Statement
JDBC从入门到放弃
02-JDBC的Statement
拿到了数据库连接对象了,我们就可以使用数据库连接来获取数据库数据,这节我们讲解Statement的使用。
数据库进行插入数据
步骤:
1:获取数据库连接
2:准备插入数据库的语句
3:执行插入数据库语句
4:关闭Statement
5:关闭数据库连接
具体操作过程如下
1:准备数据
2:如图所示建立相应项目结构
本例使用相对比较规整的项目结构来介绍数据库操作的实现
各层实现各层的功能
1:dao层:数据库操作相关类以及是实现
2:实体类层:对应数据库中相应的表
3:服务层:对外提供的供调用的功能
4:工具类:公共方法抽象成类,方便代码维护和管理
5:数据库配置文件
6:maven:依赖jar包的管理
各个部分的代码如下
Pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.liujia</groupId> <artifactId>jdbcStudy</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging>
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties>
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency>
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> <scope>provided</scope> </dependency> <!-- MySql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> </dependencies> </project> |
db.properties
db.driverClass=com.mysql.jdbc.Driver db.url=jdbc:mysql://127.0.0.1:3306/study db.user=root db.password=123456 |
DBUtils
package com.liujia.util;
import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties;
/** * * @author liujia * */ public class DBUtils {
/** * * 创建数据库连接 * @return */ public static Connection getConnection() { Connection connection = null; InputStream in = null; try { in = DBUtils.class.getClassLoader().getResourceAsStream("db.properties");
Properties properties = new Properties(); properties.load(in); String driverClass = properties.getProperty("db.driverClass"); String url = properties.getProperty("db.url"); String user = properties.getProperty("db.user"); String password = properties.getProperty("db.password");
//加载数据库驱动 Class.forName(driverClass); //使用DriverManager创建数据库连接 connection =DriverManager.getConnection(url, user, password); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return connection; }
/** * 关闭数据库连接 * * @param con */ public static void closeCon(Connection con) { if (con != null) { try { con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
|
TextUtil
package com.liujia.util;
/** * 字符处理相关类 * * @author liujia * */ public class TextUtil {
/** * 是否为空 * @param str * @return */ public static boolean isEmpty(String str) { if (str == null || "".equals(str)) { return true; } return false; } }
|
UserService
import com.liujia.dao.IUserDao; import com.liujia.dao.UserDao; import com.liujia.entity.User;
/** * 用户操作服务接口 * * @author liujia * */ public class UserService {
private IUserDao userdao = new UserDao();
/** * 增加用户 * @param user * @return */ public boolean addUser(User user) { int result = userdao.insertUser(user); return result != 0; } } |
实体类User
package com.liujia.entity;
import java.util.Date;
/** * 用户实体类 * * @author liujia * */ public class User {
private String name; private int age; private Date date;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public Date getDate() { return date; }
public void setDate(Date date) { this.date = date; }
@Override public String toString() { return "User [name=" + name + ", age=" + age + ", date=" + date + "]"; }
}
|
IUserDao
package com.liujia.dao;
import com.liujia.entity.User;
/** * 操作数据User库接口 * * @author liujia * */ public interface IUserDao { /** * 插入用户数据 * * @param user * @return */ int insertUser(User user); } |
下面我们根据以上步骤来实现插入数据的功能
1:获取数据库连接
2:准备插入数据库的语句
3:执行插入数据库语句
4:关闭Statement
5:关闭数据库连接
也就是实现UserDao的对应方法
package com.liujia.dao;
import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement;
import com.liujia.entity.User; import com.liujia.util.DBUtils;
/** * 操作User实现类 * * @author liujia * */ public class UserDao implements IUserDao {
@Override public int insertUser(User user) { int result = 0; try { // 1:获取数据库里欧按揭 Connection con = DBUtils.getConnection();
// 2:准备插入数据库语句 String sql ="INSERT INTO user(name,age,birthday)" + " VALUES('"+user.getName() +"','"+user.getAge() +"','"+user.getDate() + "');"; // 3:执行数据库插入语句 Statement statement = con.createStatement(); result = statement.executeUpdate(sql); // 4:关闭statement statement.close(); // 5:关闭数据库连接 DBUtils.closeCon(con); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result; } } |
这样我们就完成了我们的数据库插入操作。
接下来测试我们的服务是否可用
package jdbc;
import java.sql.Timestamp;
import org.junit.Test;
import com.liujia.entity.User; import com.liujia.service.UserService;
public class UseServiceTest {
@Test public void testAddUser() {
User user = new User(); user.setAge(18); user.setName("隔壁老王"); user.setDate(new Timestamp(new java.util.Date().getTime()));
UserService userService = new UserService(); userService.addUser(user); } } |
查看数据库的结果:结果正确
另附上查询数据库dao层实现
@Override public List<User> getAllUsers() { List<User> users = null; try { // 1:获取数据库里欧按揭 Connection con = DBUtils.getConnection(); // 2:准备插入数据库语句 String sql = "SELECT name,age,birthday FROM user"; // 3:执行数据库查询语句 Statement statement = con.createStatement(); ResultSet rs = statement.executeQuery(sql); if(rs!=null) { while(rs.next()) { String name = rs.getString(1); int age = rs.getInt(2); Date date = rs.getDate(3); if(users == null) { users = new ArrayList<>(); } User user = new User(); user.setName(name); user.setAge(age); user.setDate(date); users.add(user); } } // 4:关闭statement statement.close(); // 5:关闭数据库连接 DBUtils.closeCon(con); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return users; } |
源码下载地址为
https://download.****.net/download/caoshangfeidie000/10677502