1. 程式人生 > 遊戲攻略 >《一方靈田》基礎工具用途簡介

《一方靈田》基礎工具用途簡介

《零基礎學Java》


  • 資料庫操作

  • 資料庫基礎

    資料庫是一種儲存結構允許使用各種格式 輸入、處理、檢索 資料,且不用在每次需要資料時重新輸入資料。

    1. select 語句:

      select語句用於查詢資料表中的資料

      select 語句 語法:

      select 所選欄位列表 from 資料表名
      where 條件表示式 group by 欄位名 having 條件表示式
      order by 欄位名
      
    2. insert 語句:

      insert語句用於向資料表中插入新資料

      insert 語句 語法:

      insert into 表名[(欄位1) , (欄位2)]
      valuse(屬性值1 , 屬性值2)
      
    3. update 語句:

      update語句用於修改資料表中的資料

      update 語句 語法:

      update 資料表名 set 欄位名 = 新的欄位值 where 條件表示式
      
    4. 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();
                    }
                }
            }
    
        }
        
    }