JDBC全稱爲:Java Data Base Connectivity,它是能夠執行SQL語句的Java APIjava
步驟:mysql
Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { /* * 加載驅動有兩種方式 * * 1:會致使驅動會註冊兩次,過分依賴於mysql的api,脫離的mysql的開發包,程序則沒法編譯 * 2:驅動只會加載一次,不須要依賴具體的驅動,靈活性高 * * 咱們通常都是使用第二種方式 * */ //1. //DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //2. Class.forName("com.mysql.jdbc.Driver"); //獲取與數據庫鏈接的對象-Connetcion connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhongfucheng", "root", "root"); //獲取執行sql語句的statement對象 statement = connection.createStatement(); //執行sql語句,拿到結果集 resultSet = statement.executeQuery("SELECT * FROM users"); //遍歷結果集,獲得數據 while (resultSet.next()) { System.out.println(resultSet.getString(1)); System.out.println(resultSet.getString(2)); } } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { /* * 關閉資源,後調用的先關閉 * * 關閉以前,要判斷對象是否存在 * */ if (resultSet != null) { try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } if (statement != null) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } }
上面咱們已經簡單使用JDBC去查詢數據庫的數據了,接下來咱們去了解一下上面代碼用到的對象sql
客戶端與數據庫全部的交互都是經過Connection來完成的。數據庫
經常使用的方法:api
//建立向數據庫發送sql的statement對象。 createcreateStatement() //建立向數據庫發送預編譯sql的PrepareSatement對象。 prepareStatement(sql) //建立執行存儲過程的callableStatement對象 prepareCall(sql) //設置事務自動提交 setAutoCommit(boolean autoCommit) //提交事務 commit() //回滾事務 rollback()
Statement對象用於向數據庫發送Sql語句,對數據庫的增刪改查均可以經過此對象發送sql語句完成。markdown
Statement對象的經常使用方法:工具
//查詢 executeQuery(String sql) //增刪改 executeUpdate(String sql) //任意sql語句均可以,可是目標不明確,不多用 execute(String sql) //把多條的sql語句放進同一個批處理中 addBatch(String sql) //向數據庫發送一批sql語句執行 executeBatch()
ResultSet對象表明Sql語句的執行結果,當Statement對象執行executeQuery()時,會返回一個ResultSet對象學習
ResultSet對象維護了一個數據行的遊標【簡單理解成指針】,調用ResultSet.next()方法,可讓遊標指向具體的數據行,進行獲取該行的數據url
經常使用方法:spa
//獲取任意類型的數據 getObject(String columnName) //獲取指定類型的數據【各類類型,查看API】 getString(String columnName) //對結果集進行滾動查看的方法 next() Previous() absolute(int row) beforeFirst() afterLast()
經過上面的理解,咱們已經可以使用JDBC對數據庫的數據進行增刪改查了,咱們發現,不管增刪改查都須要鏈接數據庫,關閉資源,因此咱們把鏈接數據庫,釋放資源的操做抽取到一個工具類
/* * 鏈接數據庫的driver,url,username,password經過配置文件來配置,能夠增長靈活性 * 當咱們須要切換數據庫的時候,只須要在配置文件中改以上的信息便可 * * */ private static String driver = null; private static String url = null; private static String username = null; private static String password = null; static { try { //獲取配置文件的讀入流 InputStream inputStream = UtilsDemo.class.getClassLoader().getResourceAsStream("db.properties"); Properties properties = new Properties(); properties.load(inputStream); //獲取配置文件的信息 driver = properties.getProperty("driver"); url = properties.getProperty("url"); username = properties.getProperty("username"); password = properties.getProperty("password"); //加載驅動類 Class.forName(driver); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url,username,password); } public static void release(Connection connection, Statement statement, ResultSet resultSet) { if (resultSet != null) { try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } if (statement != null) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } }