JDBC鏈接數(shù)據(jù)庫的幾個步驟
此文列出了JDBC鏈接數(shù)據(jù)庫的4個步驟,供大家參考下:
JDBC:JAVA訪問數(shù)據(jù)庫的解決方案。
幾個步驟:1.加載驅(qū)動類;
2.與數(shù)據(jù)庫建立連接;
3.執(zhí)行SQL語句
4.處理結(jié)果集
5.關(guān)閉連接
1. 第一步:加載驅(qū)動類:
需要注意:不同的數(shù)據(jù)庫,參照的字符串不同,ORACLE的連接為:Class.forName("oracle.jdbc.driver.OracleDriver"); 這一步執(zhí)行后,程序可能會拋出: ClassNotFoundException,原因一般有:
a. 數(shù)據(jù)庫的驅(qū)動jar包沒有導(dǎo)入到環(huán)境變量中
b. Class.forName中的字符串拼寫不正確
2. 第二步:通過DriverManager與數(shù)據(jù)庫建立連接:
其靜態(tài)方法getConnection用來獲取連接。通常需要傳入三個參數(shù)
參數(shù)1:數(shù)據(jù)庫的地址及端口(不同數(shù)據(jù)庫字符串內(nèi)容不相同)
oracle的地址:jdbc:oracle:thin:@host:port:sid
參數(shù)2:數(shù)據(jù)庫的用戶名
參數(shù)3:數(shù)據(jù)庫對應(yīng)用戶名的密碼
Connection conn = DriverManager.getConnect
("jdbc:oracle:thin:@host:port:oracle","user", "psd");
3.第三步:java.sql.Statement 執(zhí)行SQL語句并獲取結(jié)果
Statement state = conn.createStatement();
String sql="/*這里面是SQL語句*/ ";
Statement針對不同的SQL語句提供了不同的執(zhí)行方法:
ResultSet executeQuery(String sql)
* 該方法專門用來執(zhí)行DQL語句,返回的ResultSet表示查詢出來的結(jié)果集
int executeUpdate(String sql)
* 該方法專門用來執(zhí)行DML語句,返回的數(shù)字表示執(zhí)行該語句影響了表中多少條數(shù)據(jù)
boolean execute(String sql)
* 該方法理論上什么語句都可以執(zhí)行了,但是由于DQL,DML都有專門的方法執(zhí)行了,所以該方法通常用來執(zhí)行DDL語句
ResultSet rs = state.executeQuery(sql);
輸出查詢結(jié)果:while(rs.next())
{ 輸出語句 }
ResultSet提供用于遍歷結(jié)果集的方法:
boolean next()
*該方法有兩個作用,首先當我們查詢出結(jié)果集后rs的指針指向第一條數(shù)據(jù)之上,所以我們需要先調(diào)用一次next()使其指針移動到第一條數(shù)據(jù)上并表示該條數(shù)據(jù)。
第二個作用是看返回值,若指針向下移動后,發(fā)現(xiàn)沒有數(shù)據(jù)了,會返回false,若有則返回true,所以我們只有在該方法返回true的情況下才獲取當前記錄的各個字段對應(yīng)的值RS還提供了若干個getXXX(String fieldName)方法:
*這一系列方法是用來獲取RS表示的當前記錄中給定字段對應(yīng)的值。不同的字段由于類型不同需要調(diào)用相對應(yīng)的方法
第4步:關(guān)閉連接,寫在finally塊中
finally{ if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }
將數(shù)據(jù)庫的連接放在一個工具類里面,達到重用的效果
由于訪問數(shù)據(jù)庫是經(jīng)常要用到的操作,所以在工程中,通常編寫一個訪問數(shù)據(jù)庫的工具類,此后所有訪問數(shù)據(jù)庫的操作,都從工具類中獲取連接,實現(xiàn)工具類的兩種方式:
1.直接把數(shù)據(jù)配置寫在工具類DBUtil中
2.把數(shù)據(jù)庫配置寫在一個properties屬性文件里,工具類讀入屬性文件,逐行獲取數(shù)據(jù)庫參數(shù)(一般使用第二種)
若使用第一種方法,在后期需要修改所使用的數(shù)據(jù)庫或者說修改host、端口、數(shù)據(jù)庫連接名、密碼等等時,就需要修改源代碼里面的數(shù)據(jù),不便于系統(tǒng)的維護,故一般使用第二種方法數(shù)據(jù)庫連接工具類DBUtil.java以及連接池的主要步驟:
Properties prop = new Properties(); prop.load(new FileInputStream("config.properties")); //根據(jù)配置項初始化 String driverName = prop.getProperty("driverName"); String url = prop.getProperty("url"); String username = prop.getProperty("username"); String password = prop.getProperty("password"); //最大連接數(shù) int maxActive = Integer.parseInt(prop.getProperty("maxActive")); //最大等待時間 int maxWait = Integer.parseInt(prop.getProperty("maxWait")); //初始化連接池 cp = new BasicDataSource(); //相當與是Class.forName()中的內(nèi)容 cp.setDriverClassName(driverName); cp.setUrl(url); cp.setUsername(username); cp.setPassword(password); cp.setMaxActive(maxActive); cp.setMaxWait(maxWait); public static Connection getConnection() throws Exception{ return cp.getConnection(); }以上內(nèi)容是針對JDBC鏈接數(shù)據(jù)庫的步驟做講解,希望能夠幫助到大家!
- JDBC中使用Java8的日期LocalDate和LocalDateTime操作mysql、postgresql
- java jdbc連接mysql數(shù)據(jù)庫實現(xiàn)增刪改查操作
- JSP中使用JDBC訪問SQL Server 2008數(shù)據(jù)庫示例
- JSP使用JDBC連接MYSQL數(shù)據(jù)庫的方法
- JDBC數(shù)據(jù)庫的使用操作總結(jié)
- JDBC連接Oracle數(shù)據(jù)庫常見問題及解決方法
- JDBC連接Access數(shù)據(jù)庫的幾種方式介紹
- jdbc連接sqlserver數(shù)據(jù)庫示例
- jsp+servlet+jdbc實現(xiàn)對數(shù)據(jù)庫的增刪改查
- Java使用JDBC連接postgresql數(shù)據(jù)庫示例
相關(guān)文章
Spring Web零xml配置原理以及父子容器關(guān)系詳解
這篇文章主要介紹了Spring Web零xml配置原理以及父子容器關(guān)系詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08jasypt 集成SpringBoot 數(shù)據(jù)庫密碼加密操作
這篇文章主要介紹了jasypt 集成SpringBoot 數(shù)據(jù)庫密碼加密操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11springboot網(wǎng)站應(yīng)用使用第三方qq登錄的實現(xiàn)過程
這篇文章主要介紹了springboot網(wǎng)站應(yīng)用使用第三方qq登錄,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09SpringCloud微服務(wù)開發(fā)基于RocketMQ實現(xiàn)分布式事務(wù)管理詳解
分布式事務(wù)是在微服務(wù)開發(fā)中經(jīng)常會遇到的一個問題,之前的文章中我們已經(jīng)實現(xiàn)了利用Seata來實現(xiàn)強一致性事務(wù),其實還有一種廣為人知的方案就是利用消息隊列來實現(xiàn)分布式事務(wù),保證數(shù)據(jù)的最終一致性,也就是我們常說的柔性事務(wù)2022-09-09