JDBC:Java連接MySQL數據庫(原生)


本文的環境是Windows10 64位 ,MySQL的版本是MySQL 5.6 ,JDBC最原始的連接方法,雖然做項目的時候,基本可以不寫這些代碼,但是過程還是要知道

JDBC:Java連接MySQL數據庫

步驟:

  • 先導入jar包:
    *在項目下面創建一個文件libs,把jar包復制進來,注意要右鍵buid path 點擊 add to build path,否則會報錯:java.lang.ClassNotFoundException
    在這里插入圖片描述
    *可以在網上下載這個jar包,版本很多

1. 加載數據庫驅動
//加載MySQL的驅動 ,使用反射
Class.forName("com.mysql.jdbc.Driver");
2. 通過DriverManager獲得數據庫連接
//准備工作
String url = "jdbc:mysql://127.0.0.1:3306/students";//url-->MySQL的url
String user = "root";//user-->MySQL的用戶名
String password = "root";//password-->MySQL的密碼
//使用DriverManager獲得數據庫的連接
Connection conn = DriverManager.getConnection(url,user,password);
3. 通過Connection對象創建Statement對象,用於向數據庫發送SQL語句
Statement stmt = conn.createStatement();
4. 向數據庫發送SQL語句
//通過Statement對象得到返回結果
ResultSet rs = stmt.executeQuery("sql語句");//sql為查詢語句
int updateSum = stmt.executeUpdate("sql語句");//sql為增加、修改、刪除語句
5. 操作結果集
//如果執行的是查詢語句,返回ResultSet對象
while(rs.next()){
	rs.getString("放列名");
	rs.last();
	...
}
6. 回收數據庫資源
//關閉,注意順序
rs.close();
stmt.close();
conn.close();

解析:

JDBC的全稱是 Java Database Connectivity,即Java數據庫連接,是一種可以執行SQL語句Java API。程序可以通過JDBC API 連接到關系數據庫,如MySQL、Oracle、DB2等,並使用結構化查詢語句(數據庫標准查詢語句)來完成對數據庫的查詢、更新等操作

一、為什么要使用JDBC?

當下有很多不同的數據庫,其內部特性都不相同,如果沒有JDBC,程序員要操作不同的數據庫,就要學習和使用不同的API ,如下示意圖:

后來Sun公司制定了一組標准的API,它只是接口,沒有提供實現類——這些實現類由各數據庫廠商提供實現類,也就是驅動程序。使用了JDBC之后,只要面向JDBC API編程,當用不同的數據庫,更換不同的數據庫驅動就好了,既可以實現跨數據庫,還可以跨平台,而而不需要進行程序的修改,具有非常好的移植性。如下示意圖:

二、JDBC連接過程細節?

1. 加載驅動

加載驅動一般使用Class類的forName()靜態方法來加載驅動,格式為:

Class.forName(driverClass);

加載驅動時並沒有真正的使用數據庫的驅動類,只是使用了數據庫驅動類名的字符串,其中MySQL和Oracle的如下:

MySQL的:Class.forName("com.mysql.jdbc.Driver");
Oracle的:Class.forName("oracle.jdbc.driver.OracleDriver");
2. 通過DriverManager獲得數據庫的連接,得到一個Connection對象
String url = "jdbc:mysql://127.0.0.1:3306/students";

解釋如下:

jdbc:mysql----表示用jdbc連接MySQL數據庫
localhost------表示本機服務器默認地址(127.0.0.1也可以)
3306-----MySQL默認端口號,端口號可以修改
students-----數據庫名字;
root  root-----自己數據庫的賬號密碼

DriverManager是用於管理JDBC驅動的服務類,主要作用是獲得Connection對象,用於連接,源碼如下:

public static Connection getConnection(String url,
   java.util.Properties info) throws SQLException {
   return (getConnection(url, info, Reflection.getCallerClass()));
}
3. 通過Connection創建Statement對象,得到Statement對象

Connection:代表數據庫連接對象,要訪問數據庫,必須先獲得數據庫的連接,有如下方法:

public interface Connection  extends Wrapper, AutoCloseable {
    Statement createStatement() throws SQLException;

    PreparedStatement prepareStatement(String sql)
        throws SQLException;
        
    CallableStatement prepareCall(String sql) throws SQLException;
    ......

上面三個方法都返回用於執行SQL語句的Statement對象,其中createStatement、prepareStatementStatement的子類

4. 向數據庫發送SQL語句

Statement:用於執行SQL語句的工具接口。有如下方法:

//只能用於執行查詢語句
ResultSet executeQuery(String sql) throws SQLException;
//執行DML語句,返回受影響的行數;執行DDL語句,返回0
int executeUpdate(String sql) throws SQLException;
//可以執行任何SQL語句,結果為ResultSet,返回true;否則返回false
boolean execute(String sql) throws SQLException;

PrepareStatement:預編譯的Statement對象,是Statement的子接口。
注意:擁有Statement的所有方法,而且性能更好!推薦使用!

5. 操作結果集

ResultSet:結果集對象,是一個接口,包含訪問查詢結果的方法,如下源碼:

public interface ResultSet extends Wrapper, AutoCloseable {
	boolean next() throws SQLException;
	void close() throws SQLException;
	....
}

這些方法都可以通過列索引或者列名獲得數據,有如下方法來移動記錄指針

void close();釋放ResultSet對象
void afterLast();將ResultSet的記錄指針定位到最后一行
boolean next();將Result的記錄指針定位到下一行,如果移動后指向有效數據,返回true
boolean last();將Result的記錄指針定位到最后行,如果移動后指向有效數據,返回true
......


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM