1.1 Java中的數據存儲技術
在Java中,數據庫存取技術可分為如下幾類:
1、JDBC直接訪問數據庫
2、JDO(Java Data Object)是Java對象持久化的新的規(guī)范,也是一個用于存取某種數據倉庫中的對象的標準化API。
3、第三方O/R 比如Hibernate,Mybatis等
JDBC是java訪問數據庫的基石,JDO、Hibernate、MyBatis,JDO,Hibernate、MyBatyis等只是更好的封裝的JDBC。
最近用idea連接Oracle數據庫 并且實現增刪改操作的時候,遇到的一些問題在這里跟大家分享一下。
首先,idea連接連接數據庫,都需要進行Connnection,也就是需要jdbc(Java database connection)
在進行連接之前,最先要做的事情就是導入對應所使用的數據庫的jar包。(常見的數據庫有MySQL,Oracle,SQLServer等等)
舉個例子:
我要連接Oracle數據庫,就到Oracle的官網上下載對應的jar包,當引入jar包下面出現小三角的時候,就說明導包成功!!
第一步成功,我們套用jdbc的代碼,基本上這個大家都能明白,咱也可以把它封裝在一個類里邊,必要的時候拿過來使用。
如下代碼所示: 注意看代碼的注釋!!
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;
//與數據庫建立連接
public class ConnectionTest {
//獲取連接的三個基本信息
private String dbURL = "jdbc:oracle:thin:@localhost:1521:orcl";
private String dbUser = "test";
private String dbPwd = "test";
// 獲取數據庫連接方法, 返回Connection對象
private Connection con = null;
//創(chuàng)建數據庫連接
public Connection getDBConnect() {
try {
// 加載數據庫驅動 不同的數據庫下面這個驅動是不同的,這個千萬要注意!!!
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection(dbURL, dbUser, dbPwd);
} catch (Exception e) {
System.out.println(e);
}
return con;
}
}
然后我們寫一個主方法測試一下:也就是程序執(zhí)行的出口,運行至下面這句話說明連接成功! 連接數據庫成功僅僅是第二步,接下來更重要的是進行對數據庫的增刪改操作!!
連接數據庫成功之后,就是為了下面增刪改操作服務的。注意看對數據庫進行插入操作的方法如下:(插入操作的方法要寫在Connection這個類里邊)
public void testInsert() {
PreparedStatement ps1 = null; //使用該類執(zhí)行增刪改操作不會發(fā)生sql注入現象?。?
//在進行插入操作的時候 保證你的表、以及對應的列名都存在 ?在這里表示占位符
String sql = "insert into t_user(ID,USERNAME,PASSWORD1,EMAIL) values(?,?,?,?)";
try {
//1、預編譯sql語句 返回PreparedStatement的實例給ps1 con表示Connection的對象
ps1 = con.prepareStatement(sql);
//2、填充占位符=?
ps1.setString(1, "2");
ps1.setString(2, "ww");
ps1.setString(3, "12345");
ps1.setString(4, "907372669@qq.com");
//執(zhí)行操作
ps1.execute();
} catch (SQLException e) {
e.printStackTrace();
}
//資源的關閉
try {
if (ps1 != null)
ps1.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
插入方法寫好之后,在主函數里面調用即可實現插入操作,千萬注意自己寫的sql語句寫的有沒有存在問題。
同樣往下是刪除操作的方法(ps:注意觀察關閉資源的方法,將其寫在一個方法體里,減少代碼的重用性!!)
public void testUpdate() {
PreparedStatement ps2 = null;
//編寫sql語句 返回PreparedStatement的實例
String sql = "update T_USER set USERNAME = ? where ID = ? ";
try {
ps2 = con.prepareStatement(sql);
//填充占位符=?
ps2.setObject(1,"newgg");
ps2.setObject(2,"1");
//執(zhí)行
ps2.execute();
} catch (SQLException e) {
e.printStackTrace();
}
//實現資源關閉的方法
closeSources(ps2,con);
}
//實現資源關閉的方法如下:
public void closeSources(PreparedStatement ps, Connection con) {
try {
if (ps != null)
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
接下來實現修改某一行的屬性的方法,邏輯實現同插入刪除一樣。
public void testUpdate() {
//編寫sql語句 返回PreparedStatement的實例
PreparedStatement ps2 = null;
String sql = "update T_USER set USERNAME = ? where ID = ? ";
try {
ps2 = con.prepareStatement(sql);
//填充占位符=?
ps2.setObject(1,"newgg");
ps2.setObject(2,"1");
//執(zhí)行
ps2.execute();
} catch (SQLException e) {
e.printStackTrace();
}
//實現資源的關閉
closeSources(ps2,con);
}
套路都是一樣,細心的人會發(fā)現,增刪改的操作步驟都是一樣的,但唯獨SQL語句不一樣,進而填充占位符的參數是不一樣的,利用Java 具有可變長參數的性質,我們可以寫出一個通用的增刪改的方法
//實現增刪改的通用操作
// sql占位符中的個數與可變長參數的長度一致?。?
public void insert_Delete_Update(String sql, Object ...args) {
//預編譯SQL語句,返回PreparedStatement的實例
PreparedStatement ps4 = null;
try {
ps4 = con.prepareStatement(sql);
//填充占位符
for(int i=0; iargs.length; i++) {
ps4.setObject(i+1,args[i]);
}
//執(zhí)行
ps4.execute();
} catch (SQLException e) {
e.printStackTrace();
}
//實現資源的關閉
closeSources(ps4,con);
}
于是進而實現代碼塊分離,SQL語句寫在另一個方法里,代碼實現如下:
public void test_Insert_Delete_Update() {
String sql1 = "update T_USER set username = ? where ID = ? ";
//仔細觀察這個調用的方法 username=“newQ” ID=“2”這兩個參數傳入這個方法里
insert_Delete_Update(sql1,"newQ","2");
}
在主函數調用該方法,即可實現對表的增刪改操作!
到此這篇關于使用IDEA對Oracle數據庫進行簡單增刪改查操作的文章就介紹到這了,更多相關IDEA對Oracle數據庫增刪改查內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- zabbix agent2 監(jiān)控oracle數據庫的方法
- Python查詢oracle數據庫速度慢的解決方案
- ORACLE數據庫對long類型字段進行模糊匹配的解決思路
- 配置python連接oracle讀取excel數據寫入數據庫的操作流程
- SpringBoot多數據庫連接(mysql+oracle)的實現
- 使用zabbix監(jiān)控oracle數據庫的方法詳解
- Oracle數據庫下載與安裝的完整步驟
- QT連接Oracle數據庫并實現登錄驗證的操作步驟
- oracle取數據庫中最新的一條數據可能會遇到的bug(兩種情況)
- Oracle數據庫scott用戶創(chuàng)建view視圖權限的操作方法
- ORACLE數據庫應用開發(fā)的三十個注意事項