JDBC从入门到放弃-02:JDBC的Statement

JDBC从入门到放弃

02-JDBC的Statement

拿到了数据库连接对象了,我们就可以使用数据库连接来获取数据库数据,这节我们讲解Statement的使用。

数据库进行插入数据

步骤:

1:获取数据库连接

2:准备插入数据库的语句

3:执行插入数据库语句

4:关闭Statement

5:关闭数据库连接

 

具体操作过程如下

1:准备数据

JDBC从入门到放弃-02:JDBC的Statement

2:如图所示建立相应项目结构

本例使用相对比较规整的项目结构来介绍数据库操作的实现

各层实现各层的功能

1:dao层:数据库操作相关类以及是实现

2:实体类层:对应数据库中相应的表

3:服务层:对外提供的供调用的功能

4:工具类:公共方法抽象成类,方便代码维护和管理

5:数据库配置文件

6:maven:依赖jar包的管理

JDBC从入门到放弃-02:JDBC的Statement

各个部分的代码如下

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);

     }

}

查看数据库的结果:结果正确

JDBC从入门到放弃-02:JDBC的Statement

另附上查询数据库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;

     }

 

JDBC从入门到放弃-02:JDBC的Statement源码下载地址为

https://download.csdn.net/download/caoshangfeidie000/10677502