JDBC增删改查——用Statement 和PreparedStatement实现

package com.company;

import javax.sql.rowset.CachedRowSet;
import javax.sql.rowset.RowSetFactory;
import javax.sql.rowset.RowSetProvider;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

/**
 * using Statement and PreparedStatement
 */
public class JDBCUtils1 {

    static String driver;
    static String url;
    static String user;
    static String password;
    static Statement statement = null;
    static PreparedStatement preparedStatement = null;
    static Connection coon = null;

    static PreparedStatement insert = null;

    static
    {
        String propPath = "resources/mysql.properties";
        Properties prop = new Properties();
        try {
            prop.load(new FileInputStream(propPath));
        } catch (IOException e) {
            e.printStackTrace();
        }
        driver = prop.getProperty("driver");
        url = prop.getProperty("url");
        user = prop.getProperty("user");
        password = prop.getProperty("password");
        try {
            Class.forName(driver);
            prop.load(new FileInputStream(propPath));
            coon = DriverManager.getConnection(url,user,password);
            statement = coon.createStatement();

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void createTable()
    {
        try {
            this.statement.executeUpdate("create table jdbc_test "+
                    " (jdbc_id int auto_increment primary key, "+
                    " jdbc_name varchar(255), "+
                    " jdbc_desc text);");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }



    /**
     * 注意这里每一列都要加'',否则报错
     * @param jdbc_name
     * @param jdbc_desc
     */
    public void insertDataUseStat(String jdbc_name,String jdbc_desc)
    {

        String sql = "insert into jdbc_test(jdbc_name,jdbc_desc) values (" + "'" + jdbc_name + "'," + "'" + jdbc_desc +"');";
        System.out.println(sql);
        try {
            statement.executeUpdate(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    /**
     * 使用PreparedStatement插入数据
     * @param jdbc_name
     * @param jdbc_desc
     */
    public void insertDataUsePreparedStat(String jdbc_name,String jdbc_desc)
    {

        String sql = "insert into jdbc_test(jdbc_name,jdbc_desc) values (" + "'" + jdbc_name + "'," + "'" + jdbc_desc +"');";
        System.out.println(sql);
        try {
            preparedStatement = coon.prepareStatement("insert into jdbc_test(jdbc_name,jdbc_desc) values (?,?)");
            preparedStatement.setString(1,jdbc_name);
            preparedStatement.setString(2,jdbc_desc);
            preparedStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void queryAll()
    {
        try {
            ResultSet resultSet =  statement.executeQuery("select * from jdbc_test;");

            while (resultSet.next())
            {
                System.out.println(resultSet.getString("jdbc_id"));
                System.out.println(resultSet.getString("jdbc_name"));
                System.out.println(resultSet.getString("jdbc_desc"));
            }

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

    public void queryOneByID(int jdbc_id)
    {

        try {
            ResultSet resultSet = statement.executeQuery("select * from jdbc_test where jdbc_id = " + jdbc_id +";");
            while (resultSet.next())
            {
                System.out.println(resultSet.getString("jdbc_id"));
                System.out.println(resultSet.getString("jdbc_name"));
                System.out.println(resultSet.getString("jdbc_desc"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 判断表是否存在
     * @param tableName
     * @return
     */
    public boolean hasTable(String tableName)
    {
        boolean result = false;
        try {

            DatabaseMetaData metaData = coon.getMetaData();
            ResultSet tableSet =metaData.getTables(null,null,tableName,null);
            if (tableSet.next())
            {
                result = true;
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return result;


    }

    public void createImgTable()
    {
        try {
            this.statement.executeUpdate("create table img_table "+
                    " (img_id int auto_increment primary key, "+
                    " img_name varchar(255), "+
                    " img_data mediumblob);");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 用PreparedStatement setBinaryStream,将图片存入数据库
     * @param fileName
     */
    public void insertImg(String fileName)
    {
        String imgName = fileName.substring(fileName.lastIndexOf('\\')+1,fileName.lastIndexOf('.'));
        File file = new File(fileName);
        int affect;
        try {
            FileInputStream inputStream = new FileInputStream(file);
            insert = coon.prepareStatement("insert into img_table values (null,?,?);",Statement.RETURN_GENERATED_KEYS);
            insert.setString(1,imgName);
            insert.setBinaryStream(2,inputStream,(int)file.length());
            affect = insert.executeUpdate();
            if(affect == 1)
            {
                System.out.println("insert img successfully.");
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void queryRowSet()
    {
        CachedRowSet rowSet = null;
        try {
            PreparedStatement preparedStatement = coon.prepareStatement("select * from jdbc_test");
            ResultSet resultSet = preparedStatement.executeQuery();
            RowSetFactory factory = RowSetProvider.newFactory();
            rowSet = factory.createCachedRowSet();
            //给rowset里装填resultSet,之后就可用rowSet操作结果
            rowSet.populate(resultSet);
            //把指针移动到最后一行之后
            rowSet.afterLast();
            //从后往前遍历
            while (rowSet.previous())
            {
                System.out.println(rowSet.getString(1)+"\t"+rowSet.getString(2)+"\t"+rowSet.getString(3));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    public void queryRowSetByPage()
    {
        CachedRowSet rowSet = null;
        try {
            PreparedStatement preparedStatement = coon.prepareStatement("select * from jdbc_test");
            ResultSet resultSet = preparedStatement.executeQuery();
            RowSetFactory factory = RowSetProvider.newFactory();
            rowSet = factory.createCachedRowSet();
            rowSet.setPageSize(3);
            //给rowset里装填resultSet时,指定起始行号
            rowSet.populate(resultSet,1);
            //遍历所有页的所有行
            do {
                while(rowSet.next())
                {
                    System.out.println(rowSet.getString(1)+"\t"+rowSet.getString(2)+"\t"+rowSet.getString(3));

                }
            }
            while (rowSet.nextPage());

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

    }




    public static void main(String[] args) {
        // write your code here
        JDBCUtils1 jdbcUtil = new JDBCUtils1();

        //------------------------------------------------------------------------------
        //建表
        jdbcUtil.createTable();
        //用statement插入
        jdbcUtil.insertDataUseStat("kobe","two times mvp");
        //PreparedStatement插入数据
        jdbcUtil.insertDataUsePreparedStat("mcgrady","two times defenwang");
        jdbcUtil.queryOneByID(1);
        jdbcUtil.queryAll();

        //------------------------------------存IMG------------------------------------------
        if(!jdbcUtil.hasTable("img_table"))
        {
            jdbcUtil.createImgTable();
        }
        jdbcUtil.insertImg("F:\\Test\\Swmm Page.png");

        //------------------------------------RowSet--------------------------------------------
        jdbcUtil.queryRowSet();
        //------------------------------------RowSet 分页--------------------------------------------
        jdbcUtil.queryRowSetByPage();


    }
}

猜你喜欢

转载自blog.csdn.net/qq_22339269/article/details/83478339