Java連接數據庫Oracle-增刪改查

增:

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
//使用JDBC連接數據庫,對emp進行數據的插入操作
public class TestInsert {

	public static void main(String[] args) throws SQLException {
		
		//獲得數據庫的連接
		String url = "jdbc:oracle:thin:@localhost:1521:orcl";
		String username = "system";
		String pwd = "tarena";
		Connection con = DriverManager.getConnection(url, username, pwd);
//		System.out.println(con);
		
		//預編譯SQL語句
		String sql = "insert into emp values(?,?,?,?,?,?,?,?)"; //8列8個問號
		PreparedStatement prep = con.prepareStatement(sql);
		prep.setInt(1, 2222); //員工編號
		prep.setString(2, "xiaohong"); //員工姓名
		prep.setString(3, "boss"); //職位
		prep.setInt(4, 7902); //部門經理的編號
		//時間:1小時 = 60分;1分鐘 = 60秒;1秒 = 1000毫秒 1小時 = 60*60*1000 = 3600000毫秒 
		long time = System.currentTimeMillis(); //從1970年開始至今的毫秒數
//		System.out.println(time);
		//new Date(time) 就是將long類型的毫秒數轉換未數據庫支持的日期Date類型
		prep.setDate(5, new Date(time)); //入職日期--當前系統時間
		prep.setDouble(6, 632.12); //底薪
		prep.setDouble(7, 100.0); //提成
		prep.setInt(8, 40); //部門編號
		
		//執行SQL語句
		prep.executeUpdate(); //插入、修改、刪除的SQL操作使用該方法
		con.commit(); //提交
		
		System.out.println("插入成功");
		
	}

}

刪:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
//使用JDBC連接數據庫,對emp表中的數據進行刪除操作
public class TestDelete {

	public static void main(String[] args) throws SQLException {
		
		//獲得數據庫的連接
		String url = "jdbc:oracle:thin:@localhost:1521:orcl";
		String username = "system";
		String pwd = "tarena";
		Connection con = DriverManager.getConnection(url, username, pwd);
		System.out.println(con); //測試連接是否正常 oracle.jdbc.driver.T4CConnection@57fa26b7
		
		//預編譯SQL語句
		//直接刪性能不夠好,需要封裝
		String sql = "delete from emp where empno=?";
		PreparedStatement prep = con.prepareStatement(sql);
		//設置SQL語句中的問號
		//參數1:表示第幾個問號,從數字1開始 
		//參數2:對問號要設置的值
		prep.setInt(1, 7900);
		
		//執行SQL語句
		//executeQuery() -->執行的sql語句是select...
		//executeUpdate() -->執行的SQL語句是insert... update... delete...
		prep.executeUpdate();
		con.commit(); //DML語言執行完畢後,要commit提交
		
		System.out.println("刪除成功");
		
	}

}

改:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
//使用JDBC連接數據庫,對emp表中的數據進行修改操作
public class TestUpdate {

	public static void main(String[] args) throws SQLException {
		
		//獲得數據庫的連接
		String url = "jdbc:oracle:thin:@localhost:1521:orcl";
		String username = "system";
		String pwd = "tarena";
		Connection con = DriverManager.getConnection(url, username, pwd);
		System.out.println(con);
		
		//預編譯SQL語句 -- 修改xiaohong的底薪和提成
		String sql = "update emp set sal=?,comm=? where empno=?";
		PreparedStatement prep = con.prepareStatement(sql);
		prep.setDouble(1, 8900.1); //底薪
		prep.setDouble(2, 2000); //提成
		prep.setInt(3, 2222); //員工編號2222表示xiaohong員工
		
		//執行SQL語句
		prep.executeUpdate();
		con.commit(); //提交
		
		System.out.println("更改成功");
		
	}

}

查:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//使用JDBC連接數據庫,查詢emp表中的數據
public class TestSelect {

	public static void main(String[] args) throws SQLException {
		
		//獲得數據庫Oracle的連接,連接是Connection
		//連接是通過DriverManager來調用getConnection來獲取的
		//連接Oracle數據庫的url地址
		// :理解爲連接
		//@表示寫的ip地址localhost表示本地,也可寫127.0.0.1 (局域網可訪問其他[知IP],例:機房內等)
		//thin 表示數據庫的版本爲瘦型版本
		//1521表示Oracle在安裝時默認的端口號
		//orcl是Oracle數據庫的全局數據庫名(可改)
		/**
		 * 在安裝時默認的端口號(固定的)
		 * 1、#mysql的默認端口是3306,可以編輯用戶目錄下的 .my.cnf 文件進行修改;
		 * 2、sqlserver默認端口號爲:1433;
		 * 3、#oracle默認端口號爲:1521;
		 * 4、DB2默認端口號爲:5000;
		 * 5、PostgreSQL默認端口號爲:5432。
		 */
		String url = "jdbc:oracle:thin:@localhost:1521:orcl"; 
		String username = "system"; //連接Oracle數據庫的用戶名
		String pwd = "tarena"; //連接Oracle數據庫的密碼
//		JFrame jFrame = new JFrame(); //正確
//		Connection con = new Connection(); //錯誤
		//throws 拋出異常 有可能連接不到
		Connection con = DriverManager.getConnection(url, username, pwd);
		System.out.println("獲得數據庫的連接爲:" + con);  //獲得數據庫的連接爲:oracle.jdbc.driver.T4CConnection@57fa26b7
		
		//通過上面得到的con連接,調用prepareStatement方法來預編譯SQL語句 
		//該方法返回PreparedStatement類型的對象
		//insert delete update select
		//SQL中預編譯結束標誌:";"
		String sql = "select * from emp";
		PreparedStatement prep = con.prepareStatement(sql);
		
		//通過上面得到prep來調用方法,去執行sql語句,獲得執行的結果集
		ResultSet rs = prep.executeQuery();
		//將結果集rs中的所有數據輸出在控制檯上(該結果集rs中的數據可不止一條[空/很多])
//		System.out.println(rs); //oracle.jdbc.driver.OracleResultSetImpl@531be3c5
		//使用循環將結果集中數據一條一條的取出來,然後再輸出在控制檯上
		//for明確知道循環幾遍,while、do-while不確定循環次數
//		int m = 1;
//		while (m <= 10) {
//			System.out.println(m);
//			m++;
//		}
//		//同
//		for (int i = 1; i <= 10; i++) {
//			System.out.println(i);
//		}
		//rs.next() 判斷結果集rs中下一條是否還有數據,如果有數據,返回true;如果沒有數據了,返回false
		/**
		 * 整數 byte short #int long  #number(n)
		 * 浮點/小數 float double #numbre(n,m)
		 * 字符串 String #char(n) varchar2(n)
		 * 日期 Date #date
		 */
		while (rs.next()) {
			//在控制檯上輸出15行hello。因爲rs結果集中有15條數據,所以while循環執行了15遍
//			System.out.println("hello");
			System.out.println(rs.getInt("empno") + "," + rs.getString("ename")+ "," 
					+ rs.getDate("hiredate")+ "," + rs.getDouble("sal"));
		}
		
	}

}

建表操作(內含數據)可點擊本處

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章