1. 程式人生 > >JDBC從入門到放棄 02-JDBC的Statement

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

     }

}

檢視資料庫的結果:結果正確

原始碼下載地址為