《一方靈田》基礎工具用途簡介
阿新 • • 發佈:2022-04-21
《零基礎學Java》
-
資料庫操作
-
資料庫基礎
資料庫是一種儲存結構,允許使用各種格式 輸入、處理、檢索 資料,且不用在每次需要資料時重新輸入資料。
-
select 語句:
select語句用於查詢資料表中的資料。
select 語句 語法:
select 所選欄位列表 from 資料表名 where 條件表示式 group by 欄位名 having 條件表示式 order by 欄位名
-
insert 語句:
insert語句用於向資料表中插入新資料。
insert 語句 語法:
insert into 表名[(欄位1) , (欄位2)] valuse(屬性值1 , 屬性值2)
-
update 語句:
update語句用於修改資料表中的資料。
update 語句 語法:
update 資料表名 set 欄位名 = 新的欄位值 where 條件表示式
-
delete 語句:
delete語句用於刪除資料表中的資料。
delete 語句 語法:
delete from 資料表名 where 條件表示式
-
-
連線資料庫
訪問資料庫的步驟:首先載入驅動程式(僅需要在第一次訪問資料庫時載入一次),然後每次訪問資料時建立一個Connection物件,然後接著執行SQL語句,最後完成資料庫操作後,依次銷燬前面所建立的Connection物件、釋放資料的連結。
連線資料庫 例項:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Demo { public static void main(String[] args) { try { Class.forName("com.mysql.cj.jdbc.Driver");// 載入資料庫驅動 String url = "jdbc:mysql://127.0.0.1:3306/java_learn";// 資料庫地址 String userName = "root";// 資料庫使用者名稱 String passord = "asd123";// 資料庫密碼 Connection con = DriverManager.getConnection(url,userName,passord);// 連線資料庫 System.out.println(con); con.close();// 關閉資料庫 } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException throwables) { throwables.printStackTrace(); } } }
-
資料查詢
資料的查詢主要通過 Statement介面(執行SQL語句) 和 ResultSet介面(儲存查詢結果) 實現。
Statement介面中的方法:
方法 介紹 next(); 指標向下一行。 first(); 指標回到第一行。 last(); 指標回到最後一行。 ResultSet介面中的方法:
返回型別:
getInt();
getDouble();
getString();
getObject();
過載方法:
getString(String 列名);
getString(int 第幾列);
資料查詢 例項:
import java.sql.*; public class Demo1 { public static void main(String[] args) { Connection connection = null;// 宣告Connection物件(連線介面) Statement statement = null;// 宣告Statement物件(傳送SQL介面) ResultSet resultSet = null;// 宣告ResultSet物件(結果集介面) try { Class.forName("com.mysql.cj.jdbc.Driver");// 載入驅動程式 connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java_learn", "root", "asd123");// 與資料庫連線 statement = connection.createStatement();// 建立Statement物件 resultSet = statement.executeQuery("select * from java_learn.java_1433");// 執行SQL語句 while (resultSet.next()) {// 判斷resultSet有沒有下一行 int id = resultSet.getInt("id");// 獲取列名為id的值 String name = resultSet.getString(2);// 獲取第2列的值 String sex = resultSet.getString("sex");// 獲取列名為sex的值 String birthday = resultSet.getString(4);// 獲取第4列的值 System.out.println("編號=" + id + " 姓名=" + name + " 性別=" + sex + " 生日=" + birthday); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException throwables) { throwables.printStackTrace(); } finally {// 依次關閉資料庫連線資源 if (resultSet != null) { try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } if (statement != null) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
-
動態查詢
在程式中不斷向資料庫傳送 SQL語句 ,會增加資料庫中 SQL直譯器 的負擔,從而降低 SQL語句 的執行速度。為了解決這個問題,可以使用 Connection物件 的 prepareStatement(String sql)方法 對 SQL語句 進行預處理 , 將這個命令封裝在 PreparedStatement物件 中,再通關呼叫 PreparedStatement物件 的對應方法執行底層的命令,就可以減輕SQL直譯器的負擔。
在SQL進行預處理時,可以使用 萬用字元 " ? " 來代替任何值:
PreparedStatement preparedStatement = connection.prepareStatement("select * from java_learn.java_1434 where name = ?"); preparedStatement.setString(1,"name");
動態查詢 例項:
import java.sql.*; public class Demo2 { public static void main(String[] args) { Connection connection = null;// 宣告Connection物件(連線介面) try { Class.forName("com.mysql.cj.jdbc.Driver");// 載入驅動程式 connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java_learn", "root", "asd123");// 與資料庫連線 String sql = "select * from java_learn.java_1434 where name like ? and id = ?";// SQL語句 PreparedStatement preparedStatement = connection.prepareStatement(sql);// 執行SQL語句 preparedStatement.setString(1,"小%"); preparedStatement.setInt(2,1);// 將資料庫中id為1的值返回給第二個萬用字元 ResultSet resultSet = preparedStatement.executeQuery(); System.out.println("id\tname"); while (resultSet.next()){ System.out.println(resultSet.getInt(2)+"\t"+resultSet.getString(1)); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException throwables) { throwables.printStackTrace(); } finally {// 依次關閉資料庫連線資源 if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
-
新增、修改、刪除記錄
Java中可以通過 PreparedStatement物件 動態地對資料表中原有資料進行修改操作,並通過 executeUpdate()方法 進行更新語句的操作。
新增、修改、刪除記錄 例項:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class Demo3 { public static void main(String[] args) { Connection connection = null; Statement statement = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java_learn","root","asd123"); statement = connection.createStatement(); // region 插入資料 String sql1 = "insert into java_learn.java_1435(id,name) values('12','大明')";// 插入id,name (id:12、name:大明) int result1 = statement.executeUpdate(sql1);// 執行修改許可權的SQL System.out.println("有多少行記錄被修改:"+result1); // endregion // region 修改資料 String sql2 = "update java_learn.java_1435 set name = '中明' where id = 12";// 修改 id為12 的 name為中明 int result2 = statement.executeUpdate(sql2); System.out.println("有多少行記錄被修改:"+result2); // endregion // region 刪除資料 String sql3 = "delete from java_learn.java_1435 where id = 12";// 刪除id為12的值(整一行) int result3 = statement.executeUpdate(sql3); System.out.println("有多少行記錄被修改:"+result3); // endregion } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException throwables) { throwables.printStackTrace(); }finally { if(statement!=null){ try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }