Mysql的基本操作


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import org.junit.Test;

/**
 * 
 * @author Administrator
 *
 */
public class MysqlConnection {

    @Test
    public void testMysqlConnection() {
        Connection con = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
            // 先進行插入數據
            for (int i = 1; i <= 10; i++) {
                // 下面的這個只是準備sql語句
                PreparedStatement pps = con.prepareStatement("insert into student(name,age) value('bbbb',45)");
                // 進行執行sql的語句
                int result = pps.executeUpdate();
                System.out.println("查詢的結果如下:" + result);
            }
            con.close();

            // con.prepareStatement("select * from student");//這個可以防止注入的操作

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void Testlogin() {
        try {
            login1("bbb", "123456");// createStatement存在sql語句注入的問題
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 下面的這個方法存在sql的注入的問題,因爲我們使用的是perastatement的對像
     * 
     * @param username
     * @param password
     * @throws Exception
     */
    public void login1(String username, String password) throws Exception {
        // 註冊我一個mysql的驅動
        Class.forName("com.mysql.jdbc.Driver");
        // 進行獲取連接對象
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
        // 準備sql的語句
        String sql = "select * from user where name=? and password=?";
        // 得到預編譯對像
        PreparedStatement ppst = con.prepareStatement(sql);
        // 進行給這個sql語句綁定綁定具體的值
        ppst.setString(1, username);// 從1開始
        ppst.setString(2, password);
        // 進行執行具體的sql語句
        ResultSet set = ppst.executeQuery();
        if (set.next()) {
            // 說明登錄成功了
            System.out.println("登錄成功了!!");
            System.out.println(sql);
        } else {
            System.out.println("登錄失敗了!!");
            System.out.println(sql);
        }

        if (con != null) {
            con.close();
        }
    }

    /**
     * 下面的這個案例存在sql的注入的問題
     * 
     * @param username
     * @param password
     * @throws Exception
     */
    public void login(String username, String password) throws Exception {
        // 註冊我一個mysql的驅動
        Class.forName("com.mysql.jdbc.Driver");
        // 進行獲取連接對象
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
        // 進行獲取執行sql語句的對象
        Statement stat = con.createStatement();
        // 準備sql語句
        String sql = "select * from user where name='" + username + "' and password='" + password + "'";
        // 進行執行sql語句
        ResultSet result = stat.executeQuery(sql);// select
        if (result.next()) {
            // 說明登錄成功了
            System.out.println("登錄成功了!!");
            System.out.println(sql);
        } else {
            System.out.println("登錄失敗了!!");
            System.out.println(sql);
        }

        if (con != null) {
            con.close();
        }
    }
    //下面開始操作分頁的操作
    @Test
    public void testDividePage(){
        //頁面的長度
        int pagesize=4;
        //註冊連接
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
            // 得到預編譯對像
            PreparedStatement ppst = con.prepareStatement("select count(1) from user");
            //開始執行
            ResultSet result=ppst.executeQuery();
            //得到總的行數
            int count=0;
            while(result.next()){
                count=Integer.parseInt(result.getString(1));
            }
            System.out.println(count);
            String sql="";
            //現在開始進行具體的分頁的操作
            for(int i=0;i<Math.ceil((double)count/4);i++){
                //準備分頁的sql語句
                sql="select * from user limit ?,4";
                ppst = con.prepareStatement(sql);
                ppst.setInt(1,i*pagesize);
                //進行執行
                ResultSet re=ppst.executeQuery();
                System.out.println("當前是第"+i+"頁");
                while(re.next()){
                    System.out.println("用戶名:"+re.getString("name")+": 密碼:"+re.getString("password"));
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        //先確定每個頁的長度爲4;
        //那麼則每個頁的開始位置爲(n-1)*4

    }

    //下面開始操作分頁的操作
    @Test
    public void insertData(){
        //先確定每個頁的長度爲4;
        //那麼則每個頁的開始位置爲(n-1)*4
        //註冊連接
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");

            for(int i=0;i<100;i++){
                //創建sql語句
                String sql="insert into user(name,password) value(?,?)";
                // 得到預編譯對像
                PreparedStatement ppst = con.prepareStatement(sql);
                //進行綁定數據
                ppst.setString(1,"bbb"+i);
                ppst.setString(2,"00"+i);
                //開始執行
                ppst.executeUpdate();
            }
            //最後關流
            if(con!=null){
                con.close();
            }

        } catch (Exception e) {
            e.printStackTrace();
        }



    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章