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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

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

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

什么是JDBC

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

為什么我們要用JDBC

  • 市面上有非常多的數(shù)據(jù)庫(kù),本來(lái)我們是需要根據(jù)不同的數(shù)據(jù)庫(kù)學(xué)習(xí)不同的API,sun公司為了簡(jiǎn)化這個(gè)操作,定義了JDBC API【接口】
  • sun公司只是提供了JDBC API【接口】,數(shù)據(jù)庫(kù)廠商負(fù)責(zé)實(shí)現(xiàn)。
  • 對(duì)于我們來(lái)說(shuō),操作數(shù)據(jù)庫(kù)都是在JDBC API【接口】上,使用不同的數(shù)據(jù)庫(kù),只要用數(shù)據(jù)庫(kù)廠商提供的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序即可
  • 這大大簡(jiǎn)化了我們的學(xué)習(xí)成本

簡(jiǎn)單操作JDBC

步驟:

  • 導(dǎo)入MySQL或者Oracle驅(qū)動(dòng)包
  • 裝載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序
  • 獲取到與數(shù)據(jù)庫(kù)連接
  • 獲取可以執(zhí)行SQL語(yǔ)句的對(duì)象
  • 執(zhí)行SQL語(yǔ)句
  • 關(guān)閉連接
  • Connection connection = null;Statement statement = null;ResultSet resultSet = null;try {/** 加載驅(qū)動(dòng)有兩種方式** 1:會(huì)導(dǎo)致驅(qū)動(dòng)會(huì)注冊(cè)兩次,過(guò)度依賴于mysql的api,脫離的mysql的開(kāi)發(fā)包,程序則無(wú)法編譯* 2:驅(qū)動(dòng)只會(huì)加載一次,不需要依賴具體的驅(qū)動(dòng),靈活性高** 我們一般都是使用第二種方式* *///1.//DriverManager.registerDriver(new com.mysql.jdbc.Driver());//2.Class.forName("com.mysql.jdbc.Driver");//獲取與數(shù)據(jù)庫(kù)連接的對(duì)象-Connetcionconnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhongfucheng", "root", "root");//獲取執(zhí)行sql語(yǔ)句的statement對(duì)象statement = connection.createStatement();//執(zhí)行sql語(yǔ)句,拿到結(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)閉之前,要判斷對(duì)象是否存在* */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)簡(jiǎn)單使用JDBC去查詢數(shù)據(jù)庫(kù)的數(shù)據(jù)了,接下來(lái)我們?nèi)チ私庖幌律厦娲a用到的對(duì)象


    Connection對(duì)象

    客戶端與數(shù)據(jù)庫(kù)所有的交互都是通過(guò)Connection來(lái)完成的。

    常用的方法:

    //創(chuàng)建向數(shù)據(jù)庫(kù)發(fā)送sql的statement對(duì)象。createcreateStatement()//創(chuàng)建向數(shù)據(jù)庫(kù)發(fā)送預(yù)編譯sql的PrepareSatement對(duì)象。prepareStatement(sql) //創(chuàng)建執(zhí)行存儲(chǔ)過(guò)程的callableStatement對(duì)象prepareCall(sql)//設(shè)置事務(wù)自動(dòng)提交setAutoCommit(boolean autoCommit)//提交事務(wù)commit()//回滾事務(wù)rollback()

    Statement對(duì)象

    Statement對(duì)象用于向數(shù)據(jù)庫(kù)發(fā)送Sql語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)的增刪改查都可以通過(guò)此對(duì)象發(fā)送sql語(yǔ)句完成。

    Statement對(duì)象的常用方法:

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

    ResultSet對(duì)象

    ResultSet對(duì)象代表Sql語(yǔ)句的執(zhí)行結(jié)果,當(dāng)Statement對(duì)象執(zhí)行executeQuery()時(shí),會(huì)返回一個(gè)ResultSet對(duì)象

    ResultSet對(duì)象維護(hù)了一個(gè)數(shù)據(jù)行的游標(biāo)【簡(jiǎn)單理解成指針】,調(diào)用ResultSet.next()方法,可以讓游標(biāo)指向具體的數(shù)據(jù)行,進(jìn)行獲取該行的數(shù)據(jù)

    常用方法:

    //獲取任意類型的數(shù)據(jù)getObject(String columnName)//獲取指定類型的數(shù)據(jù)【各種類型,查看API】getString(String columnName)//對(duì)結(jié)果集進(jìn)行滾動(dòng)查看的方法next()Previous()absolute(int row)beforeFirst()afterLast()

    寫(xiě)一個(gè)簡(jiǎn)單工具類

    通過(guò)上面的理解,我們已經(jīng)能夠使用JDBC對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行增刪改查了,我們發(fā)現(xiàn),無(wú)論增刪改查都需要連接數(shù)據(jù)庫(kù),關(guān)閉資源,所以我們把連接數(shù)據(jù)庫(kù),釋放資源的操作抽取到一個(gè)工具類

    /** 連接數(shù)據(jù)庫(kù)的driver,url,username,password通過(guò)配置文件來(lái)配置,可以增加靈活性* 當(dāng)我們需要切換數(shù)據(jù)庫(kù)的時(shí)候,只需要在配置文件中改以上的信息即可** */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ū)動(dòng)類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();}}}

    如果文章有錯(cuò)的地方歡迎指正,大家互相交流。習(xí)慣在微信看技術(shù)文章的同學(xué),可以關(guān)注微信公眾號(hào):Java3y


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

    總結(jié)

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

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。