JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】
什么是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
步驟:
上面我們已經(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)題。
- 上一篇: 判断js中数据类型 的最短代码
- 下一篇: node.js 搭建http调取 mys