日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】

發(fā)布時間:2023/12/2 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是JDBC

JDBC全稱為:Java Data Base Connectivity,它是可以執(zhí)行SQL語句的Java API

為什么我們要用JDBC

  • 市面上有非常多的數據庫,本來我們是需要根據不同的數據庫學習不同的API,sun公司為了簡化這個操作,定義了JDBC API【接口】
  • sun公司只是提供了JDBC API【接口】,數據庫廠商負責實現。
  • 對于我們來說,操作數據庫都是在JDBC API【接口】上,使用不同的數據庫,只要用數據庫廠商提供的數據庫驅動程序即可
  • 這大大簡化了我們的學習成本

簡單操作JDBC

步驟:

  • 導入MySQL或者Oracle驅動包
  • 裝載數據庫驅動程序
  • 獲取到與數據庫連接
  • 獲取可以執(zhí)行SQL語句的對象
  • 執(zhí)行SQL語句
  • 關閉連接
  • Connection connection = null;Statement statement = null;ResultSet resultSet = null;try {/** 加載驅動有兩種方式** 1:會導致驅動會注冊兩次,過度依賴于mysql的api,脫離的mysql的開發(fā)包,程序則無法編譯* 2:驅動只會加載一次,不需要依賴具體的驅動,靈活性高** 我們一般都是使用第二種方式* *///1.//DriverManager.registerDriver(new com.mysql.jdbc.Driver());//2.Class.forName("com.mysql.jdbc.Driver");//獲取與數據庫連接的對象-Connetcionconnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhongfucheng", "root", "root");//獲取執(zhí)行sql語句的statement對象statement = connection.createStatement();//執(zhí)行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去查詢數據庫的數據了,接下來我們去了解一下上面代碼用到的對象


    Connection對象

    客戶端與數據庫所有的交互都是通過Connection來完成的。

    常用的方法:

    //創(chuàng)建向數據庫發(fā)送sql的statement對象。createcreateStatement()//創(chuàng)建向數據庫發(fā)送預編譯sql的PrepareSatement對象。prepareStatement(sql) //創(chuàng)建執(zhí)行存儲過程的callableStatement對象prepareCall(sql)//設置事務自動提交setAutoCommit(boolean autoCommit)//提交事務commit()//回滾事務rollback()

    Statement對象

    Statement對象用于向數據庫發(fā)送Sql語句,對數據庫的增刪改查都可以通過此對象發(fā)送sql語句完成。

    Statement對象的常用方法:

    //查詢executeQuery(String sql)//增刪改executeUpdate(String sql)//任意sql語句都可以,但是目標不明確,很少用execute(String sql)//把多條的sql語句放進同一個批處理中addBatch(String sql)//向數據庫發(fā)送一批sql語句執(zhí)行executeBatch()

    ResultSet對象

    ResultSet對象代表Sql語句的執(zhí)行結果,當Statement對象執(zhí)行executeQuery()時,會返回一個ResultSet對象

    ResultSet對象維護了一個數據行的游標【簡單理解成指針】,調用ResultSet.next()方法,可以讓游標指向具體的數據行,進行獲取該行的數據

    常用方法:

    //獲取任意類型的數據getObject(String columnName)//獲取指定類型的數據【各種類型,查看API】getString(String columnName)//對結果集進行滾動查看的方法next()Previous()absolute(int row)beforeFirst()afterLast()

    寫一個簡單工具類

    通過上面的理解,我們已經能夠使用JDBC對數據庫的數據進行增刪改查了,我們發(fā)現,無論增刪改查都需要連接數據庫,關閉資源,所以我們把連接數據庫,釋放資源的操作抽取到一個工具類

    /** 連接數據庫的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();}}}

    如果文章有錯的地方歡迎指正,大家互相交流。習慣在微信看技術文章的同學,可以關注微信公眾號:Java3y


    更多專業(yè)前端知識,請上 【猿2048】www.mk2048.com

    總結

    以上是生活随笔為你收集整理的JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。