《零基礎學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(); } } } } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/461819.html
標籤:Java
