1. 程式人生 > 實用技巧 >java JDBC

java JDBC

public class JdbcApplication {
    public static void main(String[] args) {
/*
1、DriverManager
    1、註冊驅動:void registerDriver(java.sql.Driver)
        * Class.forName("com.mysql.cj.jdbc.Driver"):jvm載入com.mysql.cj.jdbc.Driver類,
            執行靜態程式碼塊,靜態程式碼塊中會呼叫DriverManager的registerDriver方法,從而註冊驅動。
        * Class.forName("com.mysql.cj.jdbc.Driver")可以省略:DriverManager會讀取META-INF
            /services/java.sql.Driver檔案,從而獲取驅動類。
    2、獲取資料庫連線:Connection getConnection(String,String,String)
2、Connection
    1、獲取執行sql的物件
        * Statement createStatement():存在sql注入問題
        * PreparedStatement prepareStatement(String):解決sql注入問題
            引數:為sql語句字串,[?]為佔位符
    2、管理事務
        * void setAutoCommit(boolean):引數:true表示關閉事務,false表示開啟事務
        * void commit():提交事務
        * void rollback():事務回滾
3、Statement
    1、執行sql
        * boolean execute(String):執行任意sql語句
        * int executeUpdate(String):執行增刪改語句;返回值:資料行變化條數
        * ResultSet executeQuery(String):執行查語句
4、ResultSet
    1、boolean next():遊標向下移動一行
    2、xxx getXxx(int/String):
        xxx:欄位的資料型別(String、int...)
        引數:int:欄位的索引(從1開始);String:欄位的名稱
5、PreparedStatement
    1、void setXxx(int,xxx):
        xxx:佔位符?的資料型別(String、int...)
        引數1:佔位符?的索引(從1開始)
        引數2:佔位符?的值
    2、執行sql
        ResultSet executeQuery():查操作
        int executeUpdate():增刪改操作

獲取src路徑下的檔案的方式:
    ClassLoader classLoader = JdbcApplication.class.getClassLoader();
    URL url = classLoader.getResource("jdbc.properties");
    String path = url.getPath();
*/ Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { //連線資料庫 Class.forName("com.mysql.cj.jdbc.Driver"); connection = DriverManager.getConnection( "jdbc:mysql://172.21.22.5:3306/studymysql
", "root", "123456"); //開啟事務 connection.setAutoCommit(false); //定義sql,建立statement,執行sql String sql = "select * from student where age > ?"; preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(
1, 20); resultSet = preparedStatement.executeQuery(); //事務提交 connection.commit(); //處理 while (resultSet.next()) { int id = resultSet.getInt(1); String name = resultSet.getString(2); int age = resultSet.getInt(3); System.out.println("{id:" + id + ",name:" + name + ",age:" + age + "}"); } } catch (Exception throwables) { //事務回滾 if (connection != null) { try { connection.rollback(); } catch (SQLException e) { e.printStackTrace(); } } throwables.printStackTrace(); } finally { //關閉資源 if (resultSet != null) { try { resultSet.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (preparedStatement != null) { try { preparedStatement.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (connection != null) { try { connection.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } } } }