大概瞭解了什麼是JDBC後,接下來再具體瞭解一下幾個經常使用API功能.後面就可使用這些API執行SQL語句html
JDBC-idea導入mysql鏈接java的jar包java
按照上面文章的步驟操做完成後,比較"硬核"的準備工做就OK了,接下來就來了解一下經常使用的APImysql
JDBC-java鏈接mysql(基於mysql8.0)sql
註冊驅動語句可省略
java.sql.Driver
com.mysql.jdbc.Driver
com.mysql.cj.jdbc.Driver
加載註冊驅動的方式 | 描述 |
---|---|
Class.forName(數據庫驅動實現類) |
加載和註冊數據庫驅動 |
// 代碼示例 public class JDBCTest01(){ public static void main(String[] args){ // 註冊驅動(基於mysql8.0)(可省略) Class.forName("com.mysql.jdbc.Driver"); } }
Connection
接口代碼一個鏈接對象.具體的實現類由數據庫的廠商實現DriverManager
類的靜態方式getConnection
能夠得到數據庫的鏈接得到鏈接的靜態方法 | 說明 |
---|---|
Connection getConnection(String url, String user, String password) |
經過鏈接字符串, 用戶名, 密碼 來獲取數據庫鏈接對象 |
String url
: mysql URL的格式jdbc:mysql://localhost:3306/數據庫名稱?其他參數
String user
: 登陸數據庫的用戶名(通常是root)String password
: 登陸數據庫的密碼[注]
參考Java MySQL鏈接 | 菜鳥編程
數據庫
// 代碼示例 public class SqlConnection { public static void main(String[] args) throws Exception{ // 1.註冊驅動 Class.forName("com.mysql.cj.jdbc.Driver"); // 2.獲取鏈接 url, 用戶名, 密碼 //"jdbc:mysql://localhost:3306/grasg?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; String DATABASE = "grasg"; String USER = "root"; String PASSWORD = "316426"; String url = "jdbc:mysql://localhost:3306/" + DATABASE + "?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; Connection con = DriverManager.getConnection(url,USER,PASSWORD); System.out.println(con); } } // 運行結果: com.mysql.cj.jdbc.ConnectionImpl@3c947bc5
經過Connection
的createStatement
方法,獲取sql語句執行對象.(語句執行對象能夠理解爲"有權利執行sql的對象")編程
Connection接口中的方法 | 說明 |
---|---|
Statement createStatement() |
建立SQL語句執行對象 |
Statement
: 表明一條語句對象,用於發送SQL語句給服務器,而後執行靜態SQL語句並返回它所生成的結果segmentfault
Statement類 經常使用方法 | 說明 |
---|---|
int executeUpdate(String sql) |
執行insert,update,delete語句.返回int類型,表明受影響的行數 |
ResultSet executeQuery(String sql) |
執行select語句,返回ResultSet結果集對象 |
// 代碼示例 public class SqlCreateTable { public static void main(String[] args) throws Exception{ // 1. 註冊驅動 Class.forName("com.mysql.cj.jdbc.Driver"); // 2. 獲取鏈接 String USER = "root"; String PASSWORD = "316426"; String DATABASE = "lianxi01"; String URL = "jdbc:mysql://localhost:3306/" + DATABASE + "?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; Connection conn = DriverManager.getConnection(URL, USER, PASSWORD); // 3. 獲取語句執行平臺 // 經過Connection的createStatement方法獲取sql語句執行對象 Statement sqlState = conn.createStatement(); // 4. 建立表 String sql = "CREATE TABLE test_01(id int, name varchar(20),age int);"; int i = sqlState.executeUpdate(sql); System.out.println("獲影響的行數爲 = " + i); System.out.println("SQL語句執行成功!"); // 5.關閉流(後建立的先關閉) sqlState.close(); conn.close(); } }
只有在進行select查詢操做時,才須要處理結果集
ResultSet接口方法 | 說明 |
---|---|
boolean next() |
遊標向下一行; 返回boolean類型,若是還有下一條記錄,返回true,不然返回false |
xxx getXxx(String or int) |
參數是String類型:表示經過<列名/字段名>獲取數據; 參數是int類型:表示經過<列號/第幾列>獲取數據,從1開始 |
// 代碼示例 public class SqlSelect { public static void main(String[] args){ Connection conn = null; Statement sqlExecute = null; ResultSet resultSet = null; try { // 1.註冊驅動 - 能夠省略 //Class.forName("com.mysql.cj.jdbc.Driver"); // 2.鏈接數據庫並獲取鏈接 String USER = "root"; String PASSWORD = "316426"; String DATABASE = "lianxi01"; String URL = "jdbc:mysql://localhost:3306/" + DATABASE + "?characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; conn = DriverManager.getConnection(URL,USER,PASSWORD); // 3.獲取語句執行平臺(Statement對象) sqlExecute = conn.createStatement(); // 4.執行select語句,返回的是一個ResultSet對象 String sql = "select * from test_01;"; resultSet = sqlExecute.executeQuery(sql); // 5.處理結果集 /*System.out.println(resultSet.next()); int id = resultSet.getInt("id"); System.out.println("id = " + id); String name = resultSet.getString("name"); System.out.println("name = " + name); int age = resultSet.getInt("age"); System.out.println("age = " + age);*/ int id; String name; int age; while(resultSet.next()){ id = resultSet.getInt("id"); name = resultSet.getString("name"); age = resultSet.getInt("age"); System.out.println("id = " + id + ", name = " + name + ", age = " + age); } } catch (SQLException throwables) { throwables.printStackTrace(); } finally { // 6.關閉流對象 try { resultSet.close(); sqlExecute.close(); conn.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } System.out.println("一切都關了!"); } }
ResultSet
結果集(只有在執行select查詢操做時纔出現結果集,才須要關閉), Statement
對象, Connection
對象Result => Statement => Connection
final
塊中