1. 程式人生 > >Java的資料庫程式設計之入門案例

Java的資料庫程式設計之入門案例

package test.jdbc;

import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import com.mysql.jdbc.Driver;

/*
 * 這個程式用來測試資料庫和JDBC驅動器是否被正確配置和使用;
 */
public class TestDB {

	public static void main(String[] args) throws IOException {
		try {
			runTest();
		} catch (SQLException e) {
			for (Throwable t : e) {
				t.printStackTrace();
			}
		}
	}

	/*
	 * 執行一個測試程式,用來建立一個表、插入一個值、展示表中的內容、移除表
	 */
	public static void runTest() throws SQLException, IOException {
		try (Connection conn = getConnection()) {
			Statement stat = conn.createStatement();
			stat.executeUpdate("CREATE TABLE Greetings(Message CHAR(20))");
			stat.executeUpdate("INSERT INTO Greetings VALUES('Hello, World!')");
			try (ResultSet rs = stat.executeQuery("SELECT * FROM Greetings")) {
				while (rs.next()) {
					System.out.println(rs.getString(1));
				}
			}
			stat.executeUpdate("DROP TABLE Greetings");
		}
	}

	/*
	 * 從指定的database.properties檔案中獲取資料庫連線
	 * 
	 * @return 對應的資料庫連線
	 */
	public static Connection getConnection() throws IOException, SQLException {

		Properties props = new Properties();
		// 從database.properties檔案中載入資料庫連線資訊
		try (InputStream in = Files.newInputStream(Paths.get("src/database.properties"))) {
			props.load(in);
		}

		String driver = props.getProperty("jdbc.driver");
		String url = props.getProperty("jdbc.url");
		String username = props.getProperty("jdbc.username");
		String password = props.getProperty("jdbc.password");

		// 註冊MySql驅動器程式
		if (driver != null) {
			System.setProperty("jdbc.drivers", driver);
		} else {
			DriverManager.registerDriver(new Driver());
		}

		// 獲取資料庫連線
		return DriverManager.getConnection(url, username, password);
	}
}
右鍵執行後,結果如下:

相關推薦

Java資料庫程式設計入門案例

package test.jdbc; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Paths; import java.sql.Connect

java多執行緒入門案例(2)多執行緒簡單應用

  上一篇文章:java多執行緒案例(1)之簡單銀行取款問題及其優化 我大概介紹了一下Java程式碼優化的問題,主要針對出學者而言,這一次我要介紹多執行緒應用的簡單案例 。網上有許多多執行緒的案例,但大多都挺複雜的,今天我主要目的也是介紹一下多執行緒應用的簡單案例,讓初學

java多執行緒入門案例(1)簡單銀行取款問題及其優化

      之前學java的時候,學校老師由於課時問題,沒有教我們多執行緒,最近學校外聘的企業教師給我們做實訓要用到多執行緒,因此才初步瞭解多執行緒,以下這個案例只是介紹java程式碼優化,程式碼中有涉及多執行緒,但今天不對其講解,只簡單講解程式碼優化的問題,希望對初學

《Python核心程式設計資料庫程式設計快速入門與專案實戰

資料庫儲存是一種持久化儲存,因此先從持久化儲存說起吧。 1.持久化儲存 (1).在任何應用中,都需要持久化儲存。一般有3種基礎的儲存機制:檔案、資料庫系統和一些混合型別。這種混合型別包括現有現有系統上的API、ORM、檔案管理器、電子表格、配置檔案等。 (2).檔案或簡單的持久化儲存可以滿足

Java語言程式設計-Eclipse入門Applet程式

Step 1:建立一個新的Java類: 如圖所示,參照Hello World的建立新類的步驟,在專案檢視欄中右擊Hello World專案,選擇“New” ->"Class",在彈出的對話方塊中設定新的Apple類名“MyApplet”,並在Superclass(父類

Java併發程式設計入門到精通 第四章 執行緒安全的集合類

java.util.HashTable:-1 說明:Hashtable函式均為同步,是執行緒安全,key,value均不能為null。-2 基本方法:get(), put(), remove(), clear(), putAll(), contains(),containsK

Java併發程式設計入門到精通 第二章 認識Java裡面的Thread

建立執行緒三種方法:-1 直接 extends Thread 覆蓋 run() 方法-2 實現Runnable介面,實現run()方法-3 實現Callable介面,實現call()方法//假設ThreadC 繼承了Callable介面FutureTask<String

java併發程式設計IO基礎入門I/O多路複用技術

在I/O程式設計過程中,當需要同時處理多個客戶端接入請求時,可以利用多執行緒或者I/O多路複用技術進行處理。I/O多路複用技術通過把多個I/O的阻塞複用到同一個select的阻塞上,從而使得系統在單執行緒的情況下可以同時處理多個客戶端請求。與傳統的多執行緒/多程序模型比,

java併發程式設計利用CAS保證操作的原子性

import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; public class Counter { private AtomicInteger at

Java併發程式設計CyclicBarrier

CyclicBarrier可以控制這樣的場景: 對多個執行緒,他們執行自己程式碼(執行run方法)的時間不一樣; 比如有3個執行緒,其run方法執行時間分別為1s, 2s, 3s。如果我們想在三個執行緒都完成自己的任務時執行相應的操作,CyclicBarrier就派上用場了。 寫了一

Java併發程式設計鎖機制LockSupport工具

關於文章涉及到的jdk原始碼,這裡把最新的jdk原始碼分享給大家----->jdk原始碼 前言 在上篇文章《Java併發程式設計之鎖機制之AQS(AbstractQueuedSynchronizer)》中我們瞭解了整個AQS的內部結構,與其獨佔式與共享式獲取同步狀態的實現

Java併發程式設計執行緒生命週期、守護執行緒、優先順序和join、sleep、yield

Java併發程式設計中,其中一個難點是對執行緒生命週期的理解,和多種執行緒控制方法、執行緒溝通方法的靈活運用。這些方法和概念之間彼此聯絡緊密,共同構成了Java併發程式設計基石之一。 Java執行緒的生命週期 Java執行緒類定義了New、Runnable、Running Man、Blocked和Dead

Java併發程式設計執行緒安全、執行緒通訊

Java多執行緒開發中最重要的一點就是執行緒安全的實現了。所謂Java執行緒安全,可以簡單理解為當多個執行緒訪問同一個共享資源時產生的資料不一致問題。為此,Java提供了一系列方法來解決執行緒安全問題。 synchronized synchronized用於同步多執行緒對共享資源的訪問,在實現中分為同步程

Java併發程式設計ThreadGroup

ThreadGroup是Java提供的一種對執行緒進行分組管理的手段,可以對所有執行緒以組為單位進行操作,如設定優先順序、守護執行緒等。 執行緒組也有父子的概念,如下圖: 執行緒組的建立 1 public class ThreadGroupCreator { 2 3 publi

Java併發程式設計Exchanger

概述   用於執行緒間資料的交換。它提供一個同步點,在這個同步點,兩個執行緒可以交換彼此的資料。這兩個執行緒通過exchange方法交換資料,如果第一個執行緒先執行exchange()方法,它會一直等待第二個執行緒也執行exchange方法,當兩個執行緒都到達同步點時,這兩個執行緒就可以交換資料

java併發程式設計使用 CountDownLatch 控制多個執行緒執行順序

有時候會有這樣的需求,多個執行緒同時工作,然後其中幾個可以隨意併發執行,但有一個執行緒需要等其他執行緒工作結束後,才能開始。舉個例子,開啟多個執行緒分塊下載一個大檔案,每個執行緒只下載固定的一截,最後由另外一個執行緒來拼接所有的分段,那麼這時候我們可以考慮使用CountDownLatch來控制併發。

JAVA併發程式設計基本概念

1、鎖是對物件訪問的時候,通過對物件加鎖,防止並行訪問的控制手段;對物件加鎖成功,代表我持有這個物件的監視器,解鎖,代表釋放了這個物件的監視器。 拿到物件的監視器,肯定是對物件加鎖成功的;對物件加鎖成功 ,程式可以主動Watiing或者Time_waiting在物件監視器上。 2、鎖與監

java併發程式設計happens-before原則,先行發生原則

下文為自己學習筆記。 關鍵詞理解: JMM:java memory model java記憶體模型 int a=1;//A int b=3;//B int c=a*b;//C 在上邊這段程式碼中,有A\B\C個語句 C依賴於A、B兩個語句,所以Ahappens-before於C,

JAVA資料庫程式設計:一(連線)

        資料庫程式設計是程式設計技術中很重要的一個模組。本文將以MYSQL資料庫為例,基於JAVA程式語言講解資料庫程式設計的連線。在進行程式設計前需要匯入mysql資料庫的驅動包:https://pan.baidu.com/s/1xpVjPNTQLv

Java併發程式設計鎖機制Condition介面

前言 在前面的文章中,我曾提到過,整個Lock介面下實現的鎖機制中AQS(AbstractQueuedSynchronizer,下文都稱之為AQS)與Condition才是真正的實現者。也就說Condition在整個同步元件的基礎框架中也起著非常重要的作用,既然它如此重要與犀利,那麼現在我