摘要:常用的方法創(chuàng)建向數(shù)據(jù)庫發(fā)送的對象。創(chuàng)建執(zhí)行存儲過程的對象設(shè)置事務(wù)自動提交提交事務(wù)回滾事務(wù)對象對象用于向數(shù)據(jù)庫發(fā)送語句,對數(shù)據(jù)庫的增刪改查都可以通過此對象發(fā)送語句完成。
1.什么是JDBC
JDBC全稱為:Java Data Base Connectivity,它是可以執(zhí)行SQL語句的Java API
2.為什么我們要用JDBC市面上有非常多的數(shù)據(jù)庫,本來我們是需要根據(jù)不同的數(shù)據(jù)庫學(xué)習(xí)不同的API,sun公司為了簡化這個操作,定義了JDBC API【接口】
sun公司只是提供了JDBC API【接口】,數(shù)據(jù)庫廠商負責實現(xiàn)。
對于我們來說,操作數(shù)據(jù)庫都是在JDBC API【接口】上,使用不同的數(shù)據(jù)庫,只要用數(shù)據(jù)庫廠商提供的數(shù)據(jù)庫驅(qū)動程序即可
這大大簡化了我們的學(xué)習(xí)成本
3.簡單操作JDBC步驟:
導(dǎo)入MySQL或者Oracle驅(qū)動包
裝載數(shù)據(jù)庫驅(qū)動程序
獲取到與數(shù)據(jù)庫連接
獲取可以執(zhí)行SQL語句的對象
執(zhí)行SQL語句
關(guān)閉連接
Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { /* * 加載驅(qū)動有兩種方式 * * 1:會導(dǎo)致驅(qū)動會注冊兩次,過度依賴于mysql的api,脫離的mysql的開發(fā)包,程序則無法編譯 * 2:驅(qū)動只會加載一次,不需要依賴具體的驅(qū)動,靈活性高 * * 我們一般都是使用第二種方式 * */ //1. //DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //2. Class.forName("com.mysql.jdbc.Driver"); //獲取與數(shù)據(jù)庫連接的對象-Connetcion connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhongfucheng", "root", "root"); //獲取執(zhí)行sql語句的statement對象 statement = connection.createStatement(); //執(zhí)行sql語句,拿到結(jié)果集 resultSet = statement.executeQuery("SELECT * FROM users"); //遍歷結(jié)果集,得到數(shù)據(jù) 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 { /* * 關(guān)閉資源,后調(diào)用的先關(guān)閉 * * 關(guān)閉之前,要判斷對象是否存在 * */ 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(); } } }
上面我們已經(jīng)簡單使用JDBC去查詢數(shù)據(jù)庫的數(shù)據(jù)了,接下來我們?nèi)チ私庖幌律厦娲a用到的對象
4.Connection對象客戶端與數(shù)據(jù)庫所有的交互都是通過Connection來完成的。
常用的方法:
//創(chuàng)建向數(shù)據(jù)庫發(fā)送sql的statement對象。 createcreateStatement() //創(chuàng)建向數(shù)據(jù)庫發(fā)送預(yù)編譯sql的PrepareSatement對象。 prepareStatement(sql) //創(chuàng)建執(zhí)行存儲過程的callableStatement對象 prepareCall(sql) //設(shè)置事務(wù)自動提交 setAutoCommit(boolean autoCommit) //提交事務(wù) commit() //回滾事務(wù) rollback()5.Statement對象
Statement對象用于向數(shù)據(jù)庫發(fā)送Sql語句,對數(shù)據(jù)庫的增刪改查都可以通過此對象發(fā)送sql語句完成。
Statement對象的常用方法:
//查詢 executeQuery(String sql) //增刪改 executeUpdate(String sql) //任意sql語句都可以,但是目標不明確,很少用 execute(String sql) //把多條的sql語句放進同一個批處理中 addBatch(String sql) //向數(shù)據(jù)庫發(fā)送一批sql語句執(zhí)行 executeBatch()6.ResultSet對象
ResultSet對象代表Sql語句的執(zhí)行結(jié)果,當Statement對象執(zhí)行executeQuery()時,會返回一個ResultSet對象
ResultSet對象維護了一個數(shù)據(jù)行的游標【簡單理解成指針】,調(diào)用ResultSet.next()方法,可以讓游標指向具體的數(shù)據(jù)行,進行獲取該行的數(shù)據(jù)
常用方法:
//獲取任意類型的數(shù)據(jù) getObject(String columnName) //獲取指定類型的數(shù)據(jù)【各種類型,查看API】 getString(String columnName) //對結(jié)果集進行滾動查看的方法 next() Previous() absolute(int row) beforeFirst() afterLast()7.寫一個簡單工具類
通過上面的理解,我們已經(jīng)能夠使用JDBC對數(shù)據(jù)庫的數(shù)據(jù)進行增刪改查了,我們發(fā)現(xiàn),無論增刪改查都需要連接數(shù)據(jù)庫,關(guān)閉資源,所以我們把連接數(shù)據(jù)庫,釋放資源的操作抽取到一個工具類
/* * 連接數(shù)據(jù)庫的driver,url,username,password通過配置文件來配置,可以增加靈活性 * 當我們需要切換數(shù)據(jù)庫的時候,只需要在配置文件中改以上的信息即可 * * */ 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"); //加載驅(qū)動類 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(); } } }
-
如果文章有錯的地方歡迎指正,大家互相交流。習(xí)慣在微信看技術(shù)文章的同學(xué),可以關(guān)注微信公眾號:Java3y
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/76310.html
摘要:是訪問數(shù)據(jù)庫的標準規(guī)范提供了一種基準據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序。在將此值發(fā)送到數(shù)據(jù)庫時,驅(qū)動程序?qū)⑺D(zhuǎn)換成一個類型值。例如值不支持中文,如果需要使用非英文字符,將進行轉(zhuǎn)換。 01JDBC概念和數(shù)據(jù)庫驅(qū)動程序 * A: JDBC概念和數(shù)據(jù)庫驅(qū)動程序 * a: JDBC概述 * JDBC(Java Data...
摘要:是訪問數(shù)據(jù)庫的標準規(guī)范。提供了一種基準據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序。代碼如下工具類數(shù)據(jù)庫驅(qū)動注冊失敗提供獲取連接的方法獲得連接返回連接 本文為大家介紹 Java 如何使用JDBC 連接 MySQL 數(shù)據(jù)庫。 JDBC概述 JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java A...
摘要:是訪問數(shù)據(jù)庫的標準規(guī)范。提供了一種基準據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序。代碼如下工具類數(shù)據(jù)庫驅(qū)動注冊失敗提供獲取連接的方法獲得連接返回連接 本文為大家介紹 Java 如何使用JDBC 連接 MySQL 數(shù)據(jù)庫。 JDBC概述 JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java A...
閱讀 1992·2021-11-22 14:45
閱讀 2612·2021-10-12 10:11
閱讀 776·2021-09-22 10:02
閱讀 1233·2019-08-30 15:55
閱讀 1147·2019-08-30 15:54
閱讀 3258·2019-08-30 15:54
閱讀 1196·2019-08-29 17:16
閱讀 3093·2019-08-28 17:55