1. 程式人生 > 實用技巧 >微信小程式訂閱訊息-springboot

微信小程式訂閱訊息-springboot

基本步驟:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/*
* JDBC:為sun公司提供的一個訪問資料庫的包
* */
public class MainTest {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        /*
        * 1.註冊驅動
        * 在Driver類今天程式碼塊中,new Driver()
        *
        * 在JDK5後 META-INF/services,資料夾中自動註冊,可以省略
        * 
*/ Class<?> aClass = Class.forName("com.mysql.jdbc.Driver"); //2.獲取連線:如果是本機且埠為預設,可以簡寫jdbc:mysql:///db1 // Connection conn= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1","root","root"); Connection conn= DriverManager.getConnection("jdbc:mysql:///db1","root","root"
); String sql="INSERT student (id,NAME,age,score) VALUES(3,\"b\",19,67)"; //3.獲取用於執行靜態SQL語句並返回其生成的結果的物件 Statement statement = conn.createStatement(); //4.執行aql語句 int cout = statement.executeUpdate(sql); System.out.println(cout); //5.釋放資源 statement.close(); conn.close(); } }

增刪改:

/*
* 增刪改:呼叫方法statement.executeUpdate(sql),返回受到影響的行數
* */
public class UpdataTest {
    public static void main(String[] args) {
        Connection conn=null;
        Statement statement=null;
        try {
            Class.forName("com.mysql.jdbc.Driver");

            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1", "root", "root");

            String sql="INSERT student (id,NAME,age,score) VALUES(3,\"b\",19,67);";

            statement = conn.createStatement();
            int res = statement.executeUpdate(sql);
            System.out.println(res);

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if (statement!=null){
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

查詢;

    /*
    * 查詢:呼叫stat.executeQuery(sql),返回ResultSet,ResultSet為一個結果集。
    * */
    private static void test1() {
        Connection conn=null;
        Statement stat=null;
        ResultSet rs=null;
        try {
            Class.forName("com.mysql.jdbc.Driver");

            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1", "root", "root");
            String sql="SELECT * FROM student";
            stat = conn.createStatement();
            rs = stat.executeQuery(sql);
            List<Student> list=new ArrayList<>();
            Student stu=null;
            while (rs.next()){
                //可以通過列下標來獲取也可以通過屬性名稱
                //int id=rs.getInt(1);

                stu=new Student();
                stu.setId(rs.getInt("id"));
                stu.setAge(rs.getInt("age"));
                stu.setName(rs.getString("name"));
                stu.setBirthday(rs.getDate("birthday"));
                stu.setInsert_time(rs.getDate("insert_time"));
                stu.setScore(rs.getDouble("score"));
                list.add(stu);
            }

            System.out.println(list.size());

            System.out.println(list);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (stat!=null){
                try {
                    stat.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

帶引數查詢:

    /*
    * 帶引數化查詢:使用的是conn.prepareStatement(sql)獲取的PreparedStatement物件。
    * 與Statement對比:
    * 1.Statement:是執行靜態的sql語句,及不帶引數的sql語句,可以用字串拼接完成帶引數,缺點:sql注入
    * 2.PreparedStatement:預載入sql,引數用?,表示。用pstmt.setString(1,"0")來加入引數。
    * */
    private static void test2() {
        Connection conn=null;
        PreparedStatement pstmt = null;
        ResultSet rs=null;
        try {
            Class.forName("com.mysql.jdbc.Driver");

            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1", "root", "root");
            //sql語句通過?代表引數
            String sql="SELECT * FROM student WHERE score>?";

            //預載入sql語句
            pstmt = conn.prepareStatement(sql);
            //根據❓下標,將引數設定
            pstmt.setString(1,"0");
            //執行帶引數sql語句
            rs = pstmt.executeQuery();
            List<Student> list=new ArrayList<>();
            Student stu=null;
            while (rs.next()){
                stu=new Student();
                stu.setId(rs.getInt("id"));
                stu.setAge(rs.getInt("age"));
                stu.setName(rs.getString("name"));
                stu.setBirthday(rs.getDate("birthday"));
                stu.setInsert_time(rs.getDate("insert_time"));
                stu.setScore(rs.getDouble("score"));
                list.add(stu);
            }

            System.out.println(list.size());

            System.out.println(list);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (pstmt!=null){
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

JDBC中connect和close封裝:

封裝類:

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;


public class JDBCUitls {
    private static String user;
    private static String password;
    private static String url;
    private static String driver;

    /*
    * 靜態程式碼塊
    * 內載入的時候執行,並且只執行一次。可實現單例模式
    * */
    static {

        try {
            //獲取類載入器
            ClassLoader clsLoader = JDBCUitls.class.getClassLoader();
            //在JDBCUitls所在的src資料夾,第一級目錄下查詢jdbc.properties檔案
            URL resource = clsLoader.getResource("jdbc.properties");
            //返回檔案絕對路徑
            String path = resource.getPath();
            //Properties載入檔案
            Properties prop=new Properties();
            prop.load(new FileReader(path));

            user = prop.getProperty("user");
            password=prop.getProperty("password");
            url=prop.getProperty("url");
            driver=prop.getProperty("driver");

            Class.forName(driver);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /*
    * 連線方法
    * */
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, user, password);
    }

    /*
    * 釋放連結
    * */
    public static void close(Connection conn, PreparedStatement pstmt, ResultSet rs){
        if (rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (pstmt!=null){
            try {
                pstmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /*
     * 釋放連結
     * */
    public static void close(Connection conn, Statement stmt){

        if (stmt!=null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

呼叫方法:

    /*
    * 封裝Connect和close
    * */
    private static void test3() {
        Connection conn=null;
        PreparedStatement pstmt = null;
        ResultSet rs=null;
        try {
            conn = JDBCUitls.getConnection();
            //sql語句通過?代表引數
            String sql="SELECT * FROM student WHERE score>?";

            //預載入sql語句
            pstmt = conn.prepareStatement(sql);
            //根據❓下標,將引數設定
            pstmt.setString(1,"0");
            //執行帶引數sql語句
            rs = pstmt.executeQuery();
            List<Student> list=new ArrayList<>();
            Student stu=null;
            while (rs.next()){
                stu=new Student();
                stu.setId(rs.getInt("id"));
                stu.setAge(rs.getInt("age"));
                stu.setName(rs.getString("name"));
                stu.setBirthday(rs.getDate("birthday"));
                stu.setInsert_time(rs.getDate("insert_time"));
                stu.setScore(rs.getDouble("score"));
                list.add(stu);
            }

            System.out.println(list.size());

            System.out.println(list);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUitls.close(conn,pstmt,rs);
        }
    }

JDBC事物:

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;


/*
* MySql中事物預設是自動提交的:每條sql語句執行完成後自動提交
* 修改事務的預設提交方式:
 * 檢視事務的預設提交方式:SELECT @@autocommit; -- 1 代表自動提交  0 代表手動提交
 * 修改預設提交方式: set @@autocommit = 0;
 *
 * JDBC中用:
 * conn.setAutoCommit(false);---設定事物為手動提交
 * conn.commit();---手動提交事物
 * conn.rollback();--回滾事物
* */
public class TransTest {
    public static void main(String[] args) {
        String sql1="UPDATE student SET age=age+5 WHERE NAME='a'";
        String sql2="UPDATE student SET age=age-5 WHERE NAME='c'";

        Connection conn=null;
        Statement stmt = null;
        try {
            conn = JDBCUitls.getConnection();
            conn.setAutoCommit(false);
            stmt = conn.createStatement();
            int res1 = stmt.executeUpdate(sql1);
//            int i=3/0;
            int res2 = stmt.executeUpdate(sql2);
            conn.commit();
        } catch (SQLException e) {
            try {
                conn.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        }finally {
            JDBCUitls.close(conn,stmt);
        }
    }
}