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</ <groupId>com.liujia</groupId> <artifactId>jdbcStudy</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties> <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); } } |
檢視資料庫的結果:結果正確
原始碼下載地址為