使用dbutils插入數據到mysql(中文亂碼解決)

1.DBUtils封裝了對JDBC的操作,簡化了JDBC操作,可以減少代碼量。

2.Dbutils三個核心功能

  1. QueryRunner中提供對sql語句操作(update,query)
  2. ResultSetHandler接口,用於定義select操作後,封裝結果集
  3. DbUtils類,它就是一個工具類,定義了關閉資源與事務處理的方法


3.QueryRunner類

QueryRunner類提供數據源(連接池),DButils底層自動維護連接connection。

1.update(String sql, Object... params)執行更新數據(可變參數)

2.query(String sql, ResultSetHandler<T> rsh,Object... params)執行查詢(可變參數)


4.ResultSetHandler 結果集處理類

  • ArrayHandler 將結果集中的第一條記錄封裝到一個Object[]數組中,數組中的每一個元素就是這條記錄中的每一個字段的值(只獲取一條數據)。
  • ArrayListHandler 將結果集中的每一條記錄都封裝到一個Object[]數組中,將這些數組在封裝到List集合中。
  • BeanHandler 將結果集中第一條記錄封裝到一個指定的javaBean中。
  • BeanListHandler 將結果集中每一條記錄封裝到指定的javaBean中,將這些javaBean在封裝到List集合中。
  • 其他詳見dbutils API。

5.代碼實現

package lesson15_jdbc;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.util.List;
import java.sql.SQLException;
import java.util.Arrays;


public class jdbc_FZ3 {
    //單個查詢 ArrayHandler
    public static void chaXun(){
        try{
            //連接數據庫
            ComboPooledDataSource ds=new ComboPooledDataSource();
            //創建QueryRnner
            QueryRunner qr=new QueryRunner(ds);
            //sql語句
            String sql="select * from 1_mytable1";
            //query執行sql語句
            Object[] query=qr.query(sql,new ArrayHandler());
            //執行結果
            System.out.println(Arrays.toString(query));
            ds.close();
        }catch (SQLException e){
            e.printStackTrace();
        }
    }

    //多個查詢 (ArrayListHandler)
    public static void chaXunAll(){
        try {
            //連接到數據庫
            ComboPooledDataSource ds = new ComboPooledDataSource();
            //創建QueryRunner
            QueryRunner qr = new QueryRunner(ds);
            //sql語句
            String sql = "select * from 1_mytable1";
            //query執行sql語句
            List<Object[]> query = qr.query(sql, new ArrayListHandler());
            //查詢結果
            for (Object[] item : query){
                System.out.println(Arrays.toString(item));
            }
        }catch (SQLException e){
            e.printStackTrace();
        }
    }

    //封裝到javabean中
    public static void chaxun2(){
        try {
            ComboPooledDataSource ds = new ComboPooledDataSource();
            QueryRunner qr = new QueryRunner(ds);
            String sql = "select * from 1_mytable1";
            Info query = qr.query(sql, new BeanHandler<>(Info.class));
            String name=query.getName();
            int age=query.getAge();
            String gender=query.getGender();
            System.out.println(name+"->"+age+"->"+gender);
            ds.close();
        }catch (SQLException e){
            e.printStackTrace();
        }

    }

    //多個查詢 (BeanListHandler)
    public static void chaXunAll2(){
        try{
        ComboPooledDataSource ds=new ComboPooledDataSource();
        QueryRunner qr=new QueryRunner(ds);
        String sql="select * from 1_mytable1";
        List<Info> query=qr.query(sql,new BeanListHandler<>(Info.class));
        for (Info item:query){
            String name=item.getName();
            int age = item.getAge();
            String gender=item.getGender();
            System.out.println(name+"->"+age+"->"+gender);
        }
        ds.close();
        }catch (SQLException e){
            e.printStackTrace();
        }
    }

    //插入
    public static void insert(){
        ComboPooledDataSource ds=new ComboPooledDataSource();
        QueryRunner qr=new QueryRunner(ds);
        String sql="insert into 1_mytable1(name,age,gender) values(?,?,?)";
        try{
            int i=qr.update(sql,"三少爺",45,"男");
            System.out.println(i);
        }catch (SQLException e){
         e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        chaXun();
        insert();
    }
}
5.輸入中文亂碼問題,設置java文件編碼,sql與jdbc連接的編碼,sql數據庫的編碼統一爲utf-8即可解決。

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