概述:
jdbc中的statement對象用於向數據發送sql語句,想完成對數據庫的增刪改查,只需要通過這個對象向數據庫發送增刪改查語句即可。
statement.executeUpdate()方法,用於向數據庫發送增,刪,改的sql語句,executeUpdate()執行完后,將返回一個整數(就是增刪改語句導致了數據庫幾行數據發生了改變)
statement.executeQuery()方法用於向數據庫發送查詢語句executeQuery()方法返回代表查詢結果的ResultSet對象
CURD操作--Create(插入操作)
科普:
增刪查改(英語:CRUD[注 1]),全稱增加(Create,意為“創建”)、刪除(Delete)、查詢(Read,意為“讀取”)、改正(Update,意為“更新”)
//4.執行SQL的對象 Statement執行sql的對象 Statement statement = connection.createStatement(); //5.用執行SQL的對象 去執行SQL,可能存在結果,返回結果 String sql="insert into user(....)values(....)"; ResultSet resultSet = statement.executeUpdate(sql) · if(num>0){ System.out.println("插入成功!!!") } //delete和update操作跟上面的相似,只是執行sql語句不同
CURD操作--read(查詢操作)
Statement statement = connection.createStatement(); //5.用執行SQL的對象 去執行SQL,可能存在結果,返回結果 String sql="SELECT * from users"; ResultSet resultSet = statement.executeQuery(sql);//返回結果集,結果集中封裝了全部的數據庫查詢出來的結果 //返回的結果集本質:是一個鏈表的形式存儲 while(resultSet.next()){ //根據獲取列的數據類型,分別調用ResultSet對象的相應方法映射的Java的對象中,(getObject可得到所有數據類型) }
代碼實現
1.提取工具類
public class JdbcUtils { private static String driver=null; private static String url=null; private static String username=null; private static String password=null; static { try{ //獲得類加載器.獲得它的資源(返回了一個輸入流) InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"); Properties properties = new Properties(); properties.load(in); driver=properties.getProperty("driver"); url=properties.getProperty("url"); username=properties.getProperty("username"); password=properties.getProperty("password"); //1.驅動只用加載一次 Class.forName(driver); } catch (Exception e) { e.printStackTrace(); } } //獲取連接 public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url, username, password); } //釋放連接資源 public static void release(Connection conn, Statement st, ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (st!=null){ try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
2.編寫增刪改方法(executeUpdate(SQL))
ublic class TestInsert { public static void main(String[] args) { Connection conn=null; Statement st=null; ResultSet rs=null; try { conn = JdbcUtils.getConnection();//獲取數據庫連接 st=conn.createStatement();//獲得SQL的執行對象 String sql="INSERT INTO users(id,`NAME`,`PASSWORD`,email,birthday)" + "VALUES(4,'king','123456','1111@qq.com','2020-9-27')"; int i = st.executeUpdate(sql); if (i>0){ System.out.println("插入成功!"); } } catch (SQLException e) { e.printStackTrace(); }finally { JdbcUtils.release(conn,st,null); } } } //注意:刪除和修改跟create相似,僅需要把sql語句改成相應功能就可實現
3.編寫搜索方法(executeQuery(SQL))
public class TestSelect { public static void main(String[] args) { Connection conn=null; Statement st=null; ResultSet rs=null; try { conn = JdbcUtils.getConnection();//獲取數據庫 st=conn.createStatement();//獲得SQL執行對象 String sql="SELECT * from users";//SQL語句 rs=st.executeQuery(sql);//獲得返回的所有數據 while(rs.next()){ System.out.println("id="+rs.getObject("id")); System.out.println("NAME="+rs.getObject("NAME")); System.out.println("PASSWORD="+rs.getObject("PASSWORD")); System.out.println("email="+rs.getObject("email")); System.out.println("birthday="+rs.getObject("birthday")); System.out.println("==========================="); } } catch (SQLException e) { e.printStackTrace(); }finally { JdbcUtils.release(conn,st,rs);//釋放資源,本質xxx.close() } } }