day01-Mysql資料庫--JDBC介紹(核心類(介面))JDBC實現程式碼
阿新 • • 發佈:2020-03-03
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(驅動管理器)的作用有兩個:
- 註冊驅動:這可以讓JDBC知道要使用的是哪個驅動;
- 獲取Connection:如果可以獲取到Connection,那麼說明已經與資料庫連線上了。
Connection物件表示連線,與資料庫的通訊都是通過這個物件展開的: - Connection最為重要的一個方法就是用來獲取Statement物件;
- Statement是用來向資料庫傳送SQL語句的,這樣資料庫就會執行傳送過來的SQL語句;
- void executeUpdate(String sql):執行更新操作(insert、update、delete等);
- ResultSet executeQuery(String sql):執行查詢操作,資料庫在執行查詢後會把查詢結果,查詢結果就是ResultSet;
ResultSet物件表示查詢結果集,只有在執行查詢操作後才會有結果集的產生。結果集是一個二維的表格,有行有列。操作結果集要學習移動ResultSet內部的“行游標”,以及獲取當前行上的每一列上的資料: - boolean next():使“行游標”移動到下一行,並返回移動後的行是否存在;
- 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();
}
}