1. JDBC是由SUN公司提出的一組規範,這組規範主要是由一組接口構成。主要作用就是訪問數據庫。
2、JDBC核心編程思想:
3、核心API
4、使用JDBC開發(java工程,Oracle數據庫):
1)搭建開發環境:
創建一個java project ------> 引入(數據庫驅動jar)ojdbc6.jar
2)編碼(僞代碼):
a)加載驅動:將實現類加載到內存中 Class.forName("oracle.jdbc.OracleDriver");
b)獲取Connection Connection conn = DriverManager.getConnection(url,username,password);
c)準備sql語句 String sql = "";
e)獲取PreparedStatement對象 PreparedStatement psmt = conn.preparedStatement(sql);
f)sql語句是增刪改語句:
int i = psmt.executeUpdate(); //返回更新的行的個數
sql語句是查詢語句:
ResultSet rs = psmt.executeQuery(); //返回的結果集,常用方法 next()
g)釋放資源,關閉連接,包括:conn,rs,ps
注意:引入(數據庫驅動jar)兩種方式:
第一種方式:右鍵--->bulid path--->config build path--> Librarys -- > add Externaljar(到本地磁盤找到jar包所在位置)
第二種方式:在項目名上右鍵 new folder --> 將驅動jar放到此目錄下 --> 在jar包上右鍵 -->build path -->add to build path
5、在4題操作中,書寫sql語句,可以用佔位符 ‘?’,但是我們需要進行匹配佔位符(利用setXXX(),getXXX()),詳細做法在下面會用示例展示。
6、Statement 和 PreparedStatement的區別:
a)使用Statement執行sql,是以字符串拼接方式給sql語句加入參數,這是增加了Sql注入的風險
b)使用PreparedStatement 可以避免sql注入,提高程序的可讀性、可維護性。
7、java中的日期類型:
a)java.util.Date utilDate = new java.util.Date();
b)java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
c)實際應用轉換:字符串日期格式
String str='2018-4-8';
SimpleDateFormat sdf = new SimpleDateFormat('yyyy-MM-dd');
java.util.Date utilDate = sdf.parse(str);
long time = utilDate.getTime();
java.sql.Date sqlDate = new java.sql.Date(time);
8、JDBC工具類封裝
無論是對數據查詢操作還是增、刪、改操作,都相同代碼,此時,我們需要將此代碼進行封裝。
封裝思路:a)確定工具類中封裝那些方法:方法的修飾符 返回值類型 都是什麼。
對於工具類而言:修飾符是 public static 目的:便於類名直接調用
返回值類型: 根據實際實現的功能而定
方法名:做到見名知義
9、封裝JDBCUtil例1如下 :
public class JDBCUtil {
static{
try {
Class.forName("oracle.jdbc.OracleDriver");
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","hr","123");
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static void closeAll(PreparedStatement ps,Connection conn,ResultSet rs){
try{
if(rs != null){ // 避免空指針異常
rs.close();
}
if(ps != null){
ps.close();
}
if(conn != null){
conn.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
10、對於9中的代碼,我們如果更改數據庫、用戶名、密碼,我們操作需要打開源代碼進行更改,那麼有沒有一種方法,不用打開源代碼就能更新成功呢?答案是 有。利用文件、配置文件等方式,我們通常用XXX.properties和XXX.xml,在本題中我們應該選用哪一種比較好呢?
注:xxx.XML類型的配置文件 特點:以標籤的形式保存信息;
xxx.properties類型配置文件 特點:以key = value形式保存信息
以上特點:相比之下,我們選用XXX.properties,因爲我們文件中保存的信息是key=value形式
優化如下:
創建一個jdbc.properties配置文件,放在src根目錄下,內容:
driverClassName=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
username=hr
password=123
完成JDBCUtil的優化如下:
public class JDBCUtil {
public static Properties p = new Properties();
static{
InputStream ins = null;
try {
ins = JDBCUtil.class.getResourceAsStream("/jdbc.properties");
p.load(ins);
Class.forName(p.getProperty("driverClassName"));
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
ins.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static Connection getConnection(){
Connection conn = null;
try {
conn = DriverManager.getConnection(p.getProperty("url"),p.getProperty("username"),p.getProperty("password"));
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static void closeAll(PreparedStatement ps,Connection conn,ResultSet rs){
try{
if(rs != null){ // 避免空指針異常
rs.close();
}
if(ps != null){
ps.close();
}
if(conn != null){
conn.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}