1. 程式人生 > 資料庫 >day01-Mysql資料庫--JDBC介紹(核心類(介面))JDBC實現程式碼

day01-Mysql資料庫--JDBC介紹(核心類(介面))JDBC實現程式碼

Mysql資料庫–JDBC介紹(核心類(介面)簡介)

什麼是JDBC

JDBC(Java DataBase Connectivity)就是Java資料庫連線,說白了就是用Java語言來操作資料庫。原來我們操作資料庫是在控制檯使用SQL語句來操作資料庫,JDBC是用Java語言向資料庫傳送SQL語句。

JDBC原理
早期SUN公司的天才們想編寫一套可以連線天下所有資料庫的API,但是當他們剛剛開始時就發現這是不可完成的任務,因為各個廠商的資料庫伺服器差異太大了。後來SUN開始與資料庫廠商們討論,最終得出的結論是,由SUN提供一套訪問資料庫的規範(就是一組介面),並提供連線資料庫的協議標準,然後各個資料庫廠商會遵循SUN的規範提供一套訪問自己公司的資料庫伺服器的API出現。SUN提供的規範命名為JDBC,而各個廠商提供的,遵循了JDBC規範的,可以訪問自己資料庫的API被稱之為驅動!

在這裡插入圖片描述
JDBC是介面,而JDBC驅動才是介面的實現,沒有驅動無法完成資料庫連線!每個資料庫廠商都有自己的驅動,用來連線自己公司的資料庫。
當然還有第三方公司專門為某一資料庫提供驅動,這樣的驅動往往不是開源免費的!

JDBC核心類(介面)介紹

JDBC中的核心類有:DriverManager、Connection、Statement,和ResultSet!
DriverManger(驅動管理器)的作用有兩個:

  1. 註冊驅動:這可以讓JDBC知道要使用的是哪個驅動;
  2. 獲取Connection:如果可以獲取到Connection,那麼說明已經與資料庫連線上了。
    Connection物件表示連線,與資料庫的通訊都是通過這個物件展開的:
  3. Connection最為重要的一個方法就是用來獲取Statement物件;
  4. Statement是用來向資料庫傳送SQL語句的,這樣資料庫就會執行傳送過來的SQL語句;
  5. void executeUpdate(String sql):執行更新操作(insert、update、delete等);
  6. ResultSet executeQuery(String sql):執行查詢操作,資料庫在執行查詢後會把查詢結果,查詢結果就是ResultSet;
    ResultSet物件表示查詢結果集,只有在執行查詢操作後才會有結果集的產生。結果集是一個二維的表格,有行有列。操作結果集要學習移動ResultSet內部的“行游標”,以及獲取當前行上的每一列上的資料:
  7. boolean next():使“行游標”移動到下一行,並返回移動後的行是否存在;
  8. XXX getXXX(int col):獲取當前行指定列上的值,引數就是列數,列數從1開始,而不是0。
使用JDBC連線資料庫程式碼實現

步驟:
1.匯入mysql資料庫的驅動jar包:
mysql-connector-java-5.1.39-bin.jar;
2.註冊驅動
3.獲取連線
4.獲取PrepareStatement
5.傳送SQL查詢語句
6.讀取結果集中的資料
7.關閉

package com.ginger.cxy;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Test;

public class ProperStatementJdbcDemo {

	@Test
	public void testProperStatement() throws ClassNotFoundException,SQLException {
		// 註冊驅動
		// 其實Mysql驅動已經寫好的註冊驅動,只要載入一下Driver就相當於註冊驅動了。不需要在手動註冊,那樣註冊了兩次驅動。
		Class.forName("com.mysql.jdbc.Driver");
		// 獲取連線
		Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sqllx","root","root");
		// 執行sql語句
		// String sql ="select * from new_user where username=? and
		// upassword=?";
		String sql = "select * from new_user where username=? and upassword=? ";
		// 獲取執行sql的ProperStatement預處理物件
		PreparedStatement prepareStatement = conn.prepareStatement(sql);
		// 設定引數
		prepareStatement.setString(1,"123456");
		prepareStatement.setString(2,"123456");
		// 執行sql語句
		ResultSet result = prepareStatement.executeQuery();
		// 迴圈結果集
		while (result.next()) {
			String username = result.getString(2);
			String password = result.getString(3);
			System.out.println(username + "," + password);
		}
		// 釋放快取
		conn.close();
		prepareStatement.close();
		result.close();

	}
}