Statement該對象用於執行靜態SQL語句並返回它產生的結果。
表示所有的參數在生成SQL的時候都是拼接好的,容易產生SQL注入的問題
PreparedStatement對象是一個預編譯的SQL語句。動態SQL
功能
1.執行SQL
3個方法
①方法:execute() 可以執行任意的SQL,用的不多了解
修飾/返回值類型:boolean
2.executeUpdate() 執行DML語句
方法:executeUpdate() 執行DML語句(insert、delete、update)增刪改數據。不常使用:DDL語句(create、drop、alter)增刪改表和庫
修飾/返回值類型:int
返回值:執行DML語句受影響的行數。可以通過這個值來判斷SQL語句是否執行成功>0執行成功,反之失敗。
執行DDL語句沒有返回結果
插入一條數據
package cn.itcast.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; /** * insert插入 * */ // 第一步不是導入驅動架包了,因為已經導入過了 public class JdbcDemo2 { public static void main(String[] args) { Statement stmt = null; Connection conn = null; try { // 1.注冊驅動,會拋出ClassNotFoundException異常(MySQL5.0后可省略) Class.forName("com.mysql.jdbc.Driver"); // 2.獲取Connection對象,會拋出SQLException異常(因為連接的是本機的數據庫所以ip地址和端口號可以省略不寫) conn= DriverManager.getConnection("jdbc:mysql:///myemployees","root","ROOT"); // 3.定義SQL String sql="insert into job_grades values('ma','16789','16789');"; // 4.獲取執行SQL的對象Staement stmt = conn.createStatement(); // 5.執行SQL(返回一個結果) int count = stmt.executeUpdate(sql);//影響的行數 // 6.處理結果 System.out.println(count); if (count>0){ System.out.println("添加成功"); }else { System.out.println("添加失敗"); } // 7.釋放資源(如果第5步執行報錯就不會執行下面的語句,下面的代碼就不會正常執行) } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally { // 8.所以應該在finally里釋放資源 // stmt.close();因為stmt不是全局變量,所以出了try的作用域就找不到了 // 先復制Statement stmt =,在等號后賦值為null // 刪除這句話中的“Statement” stmt = conn.createStatement(); // stmt.close(); // 如果只這樣寫程序在執行第3步的時候報錯,例如密碼寫錯了之類的就會報空指針異常 // 所以先要判斷 // 釋放執行SQL的對象 if (stmt != null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } // 還要釋放數據庫連接對象,再次執行上面的操作 if (conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
修改插入的數據
package cn.itcast.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; /** * update修改 * */ public class JdbcDemo3 { public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { //1.注冊驅動 Class.forName("com.mysql.jdbc.Driver"); //2.獲取數據庫連接對象 conn = DriverManager.getConnection("jdbc:mysql:///myemployees", "root", "ROOT"); //3.定義SQL String sql ="update job_grades set highest_sal = '999999' where grade_level = 'ma';"; //4.獲取執行SQL的對象 stmt = conn.createStatement(); //5.執行SQL int count = stmt.executeUpdate(sql); //6.處理返回結果 System.out.println(count); if (count>0){ System.out.println("修改成功"); }else{ System.out.println("修改失敗"); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { //7.釋放資源 if (stmt != null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
刪除插入的數據
package cn.itcast.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; /** * delete刪除 * */ public class JdbcDemo4 { public static void main(String[] args) { //聲明數據庫連接對象 Connection conn = null; //聲明數據庫執行對象 Statement stmt = null; try { //1.注冊驅動 Class.forName("com.mysql.jdbc.Driver"); //2.獲取數據庫連接對象 conn = DriverManager.getConnection("jdbc:mysql:///myemployees", "root", "ROOT"); //3.定義SQL String sql ="delete from job_grades where grade_level = 'ma';"; //4.獲取執行SQL的對象 stmt = conn.createStatement(); //5.執行SQL int count = stmt.executeUpdate(sql); //6.處理返回結果 System.out.println(count); if (count>0){ System.out.println("刪除成功"); }else{ System.out.println("刪除失敗"); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { //7.釋放資源 if (stmt != null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
1.executeUpdate() 執行DDL語句
package cn.itcast.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; /* * DDL語句 * */ public class JdbcDemo5 { public static void main(String[] args) { //聲明數據庫連接對象 Connection conn = null; //聲明數據庫執行對象 Statement stmt = null; try { //1.注冊驅動 Class.forName("com.mysql.jdbc.Driver"); //2.獲取數據庫連接對象 conn = DriverManager.getConnection("jdbc:mysql:///myemployees", "root", "ROOT"); //3.定義SQL String sql ="create table stu (id int,name varchar(20));"; //4.獲取執行SQL的對象 stmt = conn.createStatement(); //5.執行SQL int count = stmt.executeUpdate(sql); //6.處理返回結果 System.out.println(count); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { //7.釋放資源 if (stmt != null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
3.executeQuery()執行DDL語句
方法:executeQuery(String sql) 執行DQL語句(select)查詢語句
修飾/返回值類型:ResultSet (結果集)