當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之06.JDBC PreparedStatement
生活随笔
收集整理的這篇文章主要介紹了
Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之06.JDBC PreparedStatement
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
–PreparedStatement
–為占位符“?”賦值
–使用PreparedStatement動態執行SQL語句 ####################Michael分割線###################### ? PreparedStatement
–Statement只能靜態操作SQL語句,如果要想動態操作SQL語句又該如何實現呢?例如:注冊會員
–這里可以使用PreparedStatement來動態操作SQL語句
–PreparedStatement通過使用占位符“?”,來預生成SQL語句,從而達到動態操作的功能 ? 為占位符“?”賦值
–根據當前SQL的數據類型 調用相應的如下方法 ? ? 使用PreparedStatement動態執行SQL語句
–insert ConnectionUtil.java package com.michael.jdbc;????
import java.sql.Connection;????
import java.sql.DriverManager;????
import java.util.Properties;????
public class ConnectionUtil {????
????????//第一種方法????
????????public Connection getConnection(){????
????????????????Connection conn = null;????
????????????????try {????
????????????????????????//Class.forName加載驅動????
????????????????????????Class.forName("com.mysql.jdbc.Driver");????
????????????????????????//DriverManager獲得連接????
????????????????????????conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc_db","root","mysqladmin");????
????????????????????????return conn;????
????????????????} catch (Exception e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????????????return null;????
????????}????
????????//第二種方法????
????????public Connection getConnection(String driver,String url,String user,String password){????
????????????????Connection conn = null;????
????????????????try {????
????????????????????????//Class.forName加載驅動????
????????????????????????Class.forName(driver);????
????????????????????????//DriverManager獲得連接????
????????????????????????conn = DriverManager.getConnection(url,user,password);????
????????????????????????return conn;????
????????????????} catch (Exception e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????????????return null;????
????????}????
????????//第三種方法????
????????public Connection openConnection(){????
????????????????String driver = "";????
????????????????String url = "";????
????????????????String user = "";????
????????????????String password = "";????
????????????????Properties prop = new Properties();????
????????????????Connection conn = null;????
????????????????try {????
????????????????????????//加載屬性文件????
????????????????????????prop.load(this.getClass().getClassLoader().getResourceAsStream("DBConfig.properties"));????
????????????????????????driver = prop.getProperty("driver");????
????????????????????????url = prop.getProperty("url");????
????????????????????????user = prop.getProperty("user");????
????????????????????????password = prop.getProperty("password");????
????????????????????????//Class.forName加載驅動????
????????????????????????Class.forName(driver);????
????????????????????????//DriverManager獲得連接????
????????????????????????conn = DriverManager.getConnection(url,user,password);????
????????????????????????return conn;????
????????????????} catch (Exception e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????????????return null;????
????????}????
}
Customer.java package com.michael.jdbc;????
public class Customer {????
????????private int id;????
????????private String name;????
????????private String email;????
????????public String getEmail() {????
????????????????return email;????
????????}????
????????public void setEmail(String email) {????
????????????????this.email = email;????
????????}????
????????public int getId() {????
????????????????return id;????
????????}????
????????public void setId(int id) {????
????????????????this.id = id;????
????????}????
????????public String getName() {????
????????????????return name;????
????????}????
????????public void setName(String name) {????
????????????????this.name = name;????
????????}????
}
TestPrepareStatement.java package com.michael.jdbc;????
import java.sql.Connection;????
import java.sql.PreparedStatement;????
import java.sql.SQLException;????
public class TestPrepareStatement {????
????????public static void add(Customer c){????
????????????????Connection conn = new ConnectionUtil().openConnection();????
????????????????String sql = "insert into CustomerTbl(name,email) values(?,?)";????
????????????????try {????
????????????????????????PreparedStatement pstmt = conn.prepareStatement(sql);????
????????????????????????pstmt.setString(1, c.getName());????
????????????????????????pstmt.setString(2, c.getEmail());????
????????????????????????pstmt.executeUpdate();????
????????????????} catch (SQLException e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????}????
}
Main.java package com.michael.main;????
import com.michael.jdbc.Customer;????
import com.michael.jdbc.TestPrepareStatement;????
public class Main {????
????????/**????
???????? * @param args????
???????? */????
????????public static void main(String[] args) {????
????????????????Customer c = new Customer();????
????????????????c.setName("51blog");????
????????????????c.setEmail("51blog@51blog.com");????
????????????????TestPrepareStatement.add(c);????
????????}????
}
可以刪除所選的用戶,現在我們刪除ID為2的用戶 TestPrepareStatement.java package com.michael.jdbc;????
import java.sql.Connection;????
import java.sql.PreparedStatement;????
import java.sql.SQLException;????
public class TestPrepareStatement {????
????????public static void delete(int id){????
????????????????Connection conn = new ConnectionUtil().openConnection();????
????????????????String sql = "delete from CustomerTbl where id = ?";????
????????????????try {????
????????????????????????PreparedStatement pstmt = conn.prepareStatement(sql);????
????????????????????????pstmt.setInt(1,id);????
????????????????????????pstmt.executeUpdate();????
????????????????} catch (SQLException e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????}????
}
Main.java package com.michael.main;????
import com.michael.jdbc.TestPrepareStatement;????
public class Main {????
????????/**????
???????? * @param args????
???????? */????
????????public static void main(String[] args) {????
????????????????/*????
????????????????Customer c = new Customer();????
????????????????c.setName("51blog");????
????????????????c.setEmail("51blog@51blog.com");????
????????????????TestPrepareStatement.add(c);????
????????????????*/????
????????????????//刪除ID為2的用戶????
????????????????TestPrepareStatement.delete(2);????
????????}????
}
也可以更新數據,現在我們更新所有用戶名為Michael TestPrepareStatement.java package com.michael.jdbc;????
import java.sql.Connection;????
import java.sql.PreparedStatement;????
import java.sql.SQLException;????
public class TestPrepareStatement {????
????????public static void update(String name){????
????????????????Connection conn = new ConnectionUtil().openConnection();????
????????????????String sql = "update CustomerTbl set name = ?";????
????????????????try {????
????????????????????????PreparedStatement pstmt = conn.prepareStatement(sql);????
????????????????????????pstmt.setString(1, name);????
????????????????????????pstmt.executeUpdate();????
????????????????} catch (SQLException e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????}????
}
Main.java
package com.michael.main;????
import com.michael.jdbc.TestPrepareStatement;????
public class Main {????
????????/**????
???????? * @param args????
???????? */????
????????public static void main(String[] args) {????
????????????????/*????
????????????????Customer c = new Customer();????
????????????????c.setName("51blog");????
????????????????c.setEmail("51blog@51blog.com");????
????????????????TestPrepareStatement.add(c);????
????????????????*/????
????????????????//刪除ID為2的用戶????
????????????????//TestPrepareStatement.delete(2);????
????????????????TestPrepareStatement.update("Michael");????
????????}????
}
##############Michael分割線################## 更新name為51cto的用戶名為alibaba TestPrepareStatement.java package com.michael.jdbc;????
import java.sql.Connection;????
import java.sql.PreparedStatement;????
import java.sql.SQLException;????
public class TestPrepareStatement {????
????????public static void update(String name1,String name2){????
????????????????Connection conn = new ConnectionUtil().openConnection();????
????????????????String sql = "update CustomerTbl set name = ? where name = ?";????
????????????????try {????
????????????????????????PreparedStatement pstmt = conn.prepareStatement(sql);????
????????????????????????pstmt.setString(1, name1);????
????????????????????????pstmt.setString(2, name2);????
????????????????????????pstmt.executeUpdate();????
????????????????} catch (SQLException e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????}????
}????
Main.java
package com.michael.main;????
import com.michael.jdbc.TestPrepareStatement;????
public class Main {????
????????/**????
???????? * @param args????
???????? */????
????????public static void main(String[] args) {????
????????????????/*????
????????????????Customer c = new Customer();????
????????????????c.setName("51blog");????
????????????????c.setEmail("51blog@51blog.com");????
????????????????TestPrepareStatement.add(c);????
????????????????*/????
????????????????//刪除ID為2的用戶????
????????????????//TestPrepareStatement.delete(2);????
????????????????//TestPrepareStatement.update("Michael");????
????????????????TestPrepareStatement.update("Michael","51cto");????
????????}????
}
####################Michael分割線###################### ? 使用PreparedStatement動態執行SQL語句
–query TestPrepareStatement.java package com.michael.jdbc;????
import java.sql.Connection;????
import java.sql.PreparedStatement;????
import java.sql.ResultSet;????
import java.sql.SQLException;????
import java.util.ArrayList;????
import java.util.List;????
public class TestPrepareStatement {????
????????public static List query(String name){????
????????????????Connection conn = new ConnectionUtil().openConnection();????
????????????????String sql = "select * from CustomerTbl where name = ?";????
????????????????try {????
????????????????????????PreparedStatement pstmt = conn.prepareStatement(sql);????
????????????????????????pstmt.setString(1, name);????
????????????????????????ResultSet rs = pstmt.executeQuery();????
????????????????????????List list = new ArrayList();????
????????????????????????while(rs.next()){????
????????????????????????????????int id = rs.getInt(1);????
????????????????????????????????String email = rs.getString(3);????
????????????????????????????????Customer c = new Customer();????
????????????????????????????????c.setId(id);????
????????????????????????????????c.setName(name);????
????????????????????????????????c.setEmail(email);????
????????????????????????????????list.add(c);????
????????????????????????}????
????????????????????????System.out.println(list.size());????
????????????????????????return list;????
????????????????} catch (SQLException e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????????????return null;????
????????}????
}
Main.java package com.michael.main;????
import com.michael.jdbc.TestPrepareStatement;????
public class Main {????
????????/**????
???????? * @param args????
???????? */????
????????public static void main(String[] args) {????
????????????????/*????
????????????????Customer c = new Customer();????
????????????????c.setName("51blog");????
????????????????c.setEmail("51blog@51blog.com");????
????????????????TestPrepareStatement.add(c);????
????????????????*/????
????????????????//刪除ID為2的用戶????
????????????????//TestPrepareStatement.delete(2);????
????????????????//TestPrepareStatement.update("Michael");????
????????????????//TestPrepareStatement.update("Michael","51cto");????
????????????????TestPrepareStatement.query("Michael");????
????????}????
}
顯示有兩個客戶名為Michael ####################Michael分割線######################
–為占位符“?”賦值
–使用PreparedStatement動態執行SQL語句 ####################Michael分割線###################### ? PreparedStatement
–Statement只能靜態操作SQL語句,如果要想動態操作SQL語句又該如何實現呢?例如:注冊會員
–這里可以使用PreparedStatement來動態操作SQL語句
–PreparedStatement通過使用占位符“?”,來預生成SQL語句,從而達到動態操作的功能 ? 為占位符“?”賦值
–根據當前SQL的數據類型 調用相應的如下方法 ? ? 使用PreparedStatement動態執行SQL語句
–insert ConnectionUtil.java package com.michael.jdbc;????
import java.sql.Connection;????
import java.sql.DriverManager;????
import java.util.Properties;????
public class ConnectionUtil {????
????????//第一種方法????
????????public Connection getConnection(){????
????????????????Connection conn = null;????
????????????????try {????
????????????????????????//Class.forName加載驅動????
????????????????????????Class.forName("com.mysql.jdbc.Driver");????
????????????????????????//DriverManager獲得連接????
????????????????????????conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc_db","root","mysqladmin");????
????????????????????????return conn;????
????????????????} catch (Exception e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????????????return null;????
????????}????
????????//第二種方法????
????????public Connection getConnection(String driver,String url,String user,String password){????
????????????????Connection conn = null;????
????????????????try {????
????????????????????????//Class.forName加載驅動????
????????????????????????Class.forName(driver);????
????????????????????????//DriverManager獲得連接????
????????????????????????conn = DriverManager.getConnection(url,user,password);????
????????????????????????return conn;????
????????????????} catch (Exception e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????????????return null;????
????????}????
????????//第三種方法????
????????public Connection openConnection(){????
????????????????String driver = "";????
????????????????String url = "";????
????????????????String user = "";????
????????????????String password = "";????
????????????????Properties prop = new Properties();????
????????????????Connection conn = null;????
????????????????try {????
????????????????????????//加載屬性文件????
????????????????????????prop.load(this.getClass().getClassLoader().getResourceAsStream("DBConfig.properties"));????
????????????????????????driver = prop.getProperty("driver");????
????????????????????????url = prop.getProperty("url");????
????????????????????????user = prop.getProperty("user");????
????????????????????????password = prop.getProperty("password");????
????????????????????????//Class.forName加載驅動????
????????????????????????Class.forName(driver);????
????????????????????????//DriverManager獲得連接????
????????????????????????conn = DriverManager.getConnection(url,user,password);????
????????????????????????return conn;????
????????????????} catch (Exception e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????????????return null;????
????????}????
}
Customer.java package com.michael.jdbc;????
public class Customer {????
????????private int id;????
????????private String name;????
????????private String email;????
????????public String getEmail() {????
????????????????return email;????
????????}????
????????public void setEmail(String email) {????
????????????????this.email = email;????
????????}????
????????public int getId() {????
????????????????return id;????
????????}????
????????public void setId(int id) {????
????????????????this.id = id;????
????????}????
????????public String getName() {????
????????????????return name;????
????????}????
????????public void setName(String name) {????
????????????????this.name = name;????
????????}????
}
TestPrepareStatement.java package com.michael.jdbc;????
import java.sql.Connection;????
import java.sql.PreparedStatement;????
import java.sql.SQLException;????
public class TestPrepareStatement {????
????????public static void add(Customer c){????
????????????????Connection conn = new ConnectionUtil().openConnection();????
????????????????String sql = "insert into CustomerTbl(name,email) values(?,?)";????
????????????????try {????
????????????????????????PreparedStatement pstmt = conn.prepareStatement(sql);????
????????????????????????pstmt.setString(1, c.getName());????
????????????????????????pstmt.setString(2, c.getEmail());????
????????????????????????pstmt.executeUpdate();????
????????????????} catch (SQLException e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????}????
}
Main.java package com.michael.main;????
import com.michael.jdbc.Customer;????
import com.michael.jdbc.TestPrepareStatement;????
public class Main {????
????????/**????
???????? * @param args????
???????? */????
????????public static void main(String[] args) {????
????????????????Customer c = new Customer();????
????????????????c.setName("51blog");????
????????????????c.setEmail("51blog@51blog.com");????
????????????????TestPrepareStatement.add(c);????
????????}????
}
可以刪除所選的用戶,現在我們刪除ID為2的用戶 TestPrepareStatement.java package com.michael.jdbc;????
import java.sql.Connection;????
import java.sql.PreparedStatement;????
import java.sql.SQLException;????
public class TestPrepareStatement {????
????????public static void delete(int id){????
????????????????Connection conn = new ConnectionUtil().openConnection();????
????????????????String sql = "delete from CustomerTbl where id = ?";????
????????????????try {????
????????????????????????PreparedStatement pstmt = conn.prepareStatement(sql);????
????????????????????????pstmt.setInt(1,id);????
????????????????????????pstmt.executeUpdate();????
????????????????} catch (SQLException e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????}????
}
Main.java package com.michael.main;????
import com.michael.jdbc.TestPrepareStatement;????
public class Main {????
????????/**????
???????? * @param args????
???????? */????
????????public static void main(String[] args) {????
????????????????/*????
????????????????Customer c = new Customer();????
????????????????c.setName("51blog");????
????????????????c.setEmail("51blog@51blog.com");????
????????????????TestPrepareStatement.add(c);????
????????????????*/????
????????????????//刪除ID為2的用戶????
????????????????TestPrepareStatement.delete(2);????
????????}????
}
也可以更新數據,現在我們更新所有用戶名為Michael TestPrepareStatement.java package com.michael.jdbc;????
import java.sql.Connection;????
import java.sql.PreparedStatement;????
import java.sql.SQLException;????
public class TestPrepareStatement {????
????????public static void update(String name){????
????????????????Connection conn = new ConnectionUtil().openConnection();????
????????????????String sql = "update CustomerTbl set name = ?";????
????????????????try {????
????????????????????????PreparedStatement pstmt = conn.prepareStatement(sql);????
????????????????????????pstmt.setString(1, name);????
????????????????????????pstmt.executeUpdate();????
????????????????} catch (SQLException e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????}????
}
Main.java
package com.michael.main;????
import com.michael.jdbc.TestPrepareStatement;????
public class Main {????
????????/**????
???????? * @param args????
???????? */????
????????public static void main(String[] args) {????
????????????????/*????
????????????????Customer c = new Customer();????
????????????????c.setName("51blog");????
????????????????c.setEmail("51blog@51blog.com");????
????????????????TestPrepareStatement.add(c);????
????????????????*/????
????????????????//刪除ID為2的用戶????
????????????????//TestPrepareStatement.delete(2);????
????????????????TestPrepareStatement.update("Michael");????
????????}????
}
##############Michael分割線################## 更新name為51cto的用戶名為alibaba TestPrepareStatement.java package com.michael.jdbc;????
import java.sql.Connection;????
import java.sql.PreparedStatement;????
import java.sql.SQLException;????
public class TestPrepareStatement {????
????????public static void update(String name1,String name2){????
????????????????Connection conn = new ConnectionUtil().openConnection();????
????????????????String sql = "update CustomerTbl set name = ? where name = ?";????
????????????????try {????
????????????????????????PreparedStatement pstmt = conn.prepareStatement(sql);????
????????????????????????pstmt.setString(1, name1);????
????????????????????????pstmt.setString(2, name2);????
????????????????????????pstmt.executeUpdate();????
????????????????} catch (SQLException e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????}????
}????
Main.java
package com.michael.main;????
import com.michael.jdbc.TestPrepareStatement;????
public class Main {????
????????/**????
???????? * @param args????
???????? */????
????????public static void main(String[] args) {????
????????????????/*????
????????????????Customer c = new Customer();????
????????????????c.setName("51blog");????
????????????????c.setEmail("51blog@51blog.com");????
????????????????TestPrepareStatement.add(c);????
????????????????*/????
????????????????//刪除ID為2的用戶????
????????????????//TestPrepareStatement.delete(2);????
????????????????//TestPrepareStatement.update("Michael");????
????????????????TestPrepareStatement.update("Michael","51cto");????
????????}????
}
####################Michael分割線###################### ? 使用PreparedStatement動態執行SQL語句
–query TestPrepareStatement.java package com.michael.jdbc;????
import java.sql.Connection;????
import java.sql.PreparedStatement;????
import java.sql.ResultSet;????
import java.sql.SQLException;????
import java.util.ArrayList;????
import java.util.List;????
public class TestPrepareStatement {????
????????public static List query(String name){????
????????????????Connection conn = new ConnectionUtil().openConnection();????
????????????????String sql = "select * from CustomerTbl where name = ?";????
????????????????try {????
????????????????????????PreparedStatement pstmt = conn.prepareStatement(sql);????
????????????????????????pstmt.setString(1, name);????
????????????????????????ResultSet rs = pstmt.executeQuery();????
????????????????????????List list = new ArrayList();????
????????????????????????while(rs.next()){????
????????????????????????????????int id = rs.getInt(1);????
????????????????????????????????String email = rs.getString(3);????
????????????????????????????????Customer c = new Customer();????
????????????????????????????????c.setId(id);????
????????????????????????????????c.setName(name);????
????????????????????????????????c.setEmail(email);????
????????????????????????????????list.add(c);????
????????????????????????}????
????????????????????????System.out.println(list.size());????
????????????????????????return list;????
????????????????} catch (SQLException e) {????
????????????????????????e.printStackTrace();????
????????????????}????
????????????????return null;????
????????}????
}
Main.java package com.michael.main;????
import com.michael.jdbc.TestPrepareStatement;????
public class Main {????
????????/**????
???????? * @param args????
???????? */????
????????public static void main(String[] args) {????
????????????????/*????
????????????????Customer c = new Customer();????
????????????????c.setName("51blog");????
????????????????c.setEmail("51blog@51blog.com");????
????????????????TestPrepareStatement.add(c);????
????????????????*/????
????????????????//刪除ID為2的用戶????
????????????????//TestPrepareStatement.delete(2);????
????????????????//TestPrepareStatement.update("Michael");????
????????????????//TestPrepareStatement.update("Michael","51cto");????
????????????????TestPrepareStatement.query("Michael");????
????????}????
}
顯示有兩個客戶名為Michael ####################Michael分割線######################
總結
以上是生活随笔為你收集整理的Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之06.JDBC PreparedStatement的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Discuz!NT论坛代码小分析
- 下一篇: phpmyadmin 安装