jdbc操作数据库

jdbcUtil.java 数据库连接,关闭 工具类

package c_util;

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

/*
 * jdbc工具类
 * */

public class jdbcUtil {

    private static String url = "jdbc:mysql://localhost:3306/day15";
    private static String user = "root";
    private static String password = "root";

    /*
     * 静态代码块
     * */
    static{
        //注册驱动程序
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("驱动程序注册出错");
        }
    }

    /*
     * 抽取获取连接对象的方法
     * */
    public static Connection getConnection(){
        try {
            Connection conn = DriverManager.getConnection(url,user,password);
            return conn;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            throw new RuntimeException();
        }
    }

    /*
     * 释放查询资源
     * */
    public static void close(Connection conn,Statement stat,ResultSet rs){
        if(rs!=null){
            try {
                rs.close();
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
        if(stat!=null)
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        if(conn!=null)
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
    }   

    /*
    释放增删改查资源
    */
    public static void close(Connection conn,Statement stat){
        if(stat!=null)
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        if(conn!=null)
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
    }
}

demo1.java 未使用jdbc.java工具类

package b_statement;

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

import org.junit.Test;

/**
 * 使用Statement对象执行静态sql语句
 * @author APPle
 *
 */
public class demo1 {

    private String url = "jdbc:mysql://localhost:3306/day15";
    private String user = "root";
    private String password = "root";
    /**
     * 执行DDL语句(创建表)
     */
    @Test
    public void test1(){
        Statement stat = null;
        Connection conn = null;
        ResultSet rs = null; //(在线式)结果集接口,必须保持与数据库的连接
        try {
            //1.驱动注册程序
            Class.forName("com.mysql.jdbc.Driver");

            //2.获取连接对象
            conn = DriverManager.getConnection(url, user, password);

            /*3.创建statment对象,
            statement:执行命令对象,把sql语句发送到数据库执行
            Statement 是 Java 执行数据库操作的一个重要接口,
            用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。
            Statement对象,用于执行不带参数的简单SQL语句。*/
            stat = conn.createStatement();

            //4.准备sql
            String sql = "CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),gender VARCHAR(2))";

            //5.发送sql语句,执行sql语句,得到返回结果
            int count = stat.executeUpdate(sql);

            //6.输出
            System.out.println("影响了"+count+"行!");
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        } finally{
            //7.关闭连接(顺序:后打开的先关闭)
            if(stat!=null)
                try {
                    stat.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    throw new RuntimeException(e);
                }
            if(conn!=null)
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    throw new RuntimeException(e);
                }
        }       
    }
}

demo2.java 已使用jdbcUtil.java工具类

int count = stat.executeUpdate(sql);

/*
 * 使用statement执行DML语句
 * */

public class demo2 {

    @Test
    public void testInsert(){

        Connection conn = null;
        Statement stat = null;

        try {
            conn = jdbcUtil.getConnection();

            //3.使用statment对象
            stat = conn.createStatement();

            //4.准备sql语句
            String sql = "insert into student(name,gender) values('王五','男');";

            //5.发送sql语句
            int count = stat.executeUpdate(sql);

            //6.输出
            System.out.println("影响了"+count+"行!");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            //7.关闭连接(顺序:后打开的先关闭)
            jdbcUtil.close(conn, stat);
        }
    }
}

demo3.java 查询操作

ResultSet rs = stat.executeQuery(sql);

/*
 * jdbc查询操作
 * */
public class demo3 {

    Connection conn = null;
    Statement stat = null;

    @Test
    public void testSelect(){

        try {
            conn = jdbcUtil.getConnection();
            stat = conn.createStatement();
            String sql = "select * from student";
            ResultSet rs = stat.executeQuery(sql);

            //移动光标取第一行数据
            //boolean flag = rs.next();

            while(rs.next()){
                /*
                根据索引取值
                int id = rs.getInt(1);
                String name = rs.getString(2);
                String gender = rs.getString(3);
                System.out.println(""+id+"|"+name+"|"+gender);
                 * */

                //根据列名称取值
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String gender = rs.getString("gender");
                System.out.println(""+id+"|"+name+"|"+gender);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            jdbcUtil.close(conn, stat);
        }
    }
}

demo4.java 预编译,防止sql注入

stat = conn.prepareStatement(sql);

/*
 * 模拟用户登录效果
 * */

public class demo2 {

    @Test
    public void test(){

        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;

        try {
            conn = jdbcUtil.getConnection();
            String sql = "select * from users where name= ? and password=?";
            stat = conn.prepareStatement(sql);

            stat.setString(1, "张三");
            stat.setString(2, "123456");

            rs = stat.executeQuery();

            if(rs.next()){
                System.out.println("登录成功");
            }else {
                System.out.println("登录失败");
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }finally {
            jdbcUtil.close(conn, stat,rs);
        }
    }
}

demo5.java 获取自增长列

public class demo3 {

    @Test
    public void test(){

        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;    //结果集
        String sql = "insert into student(name,gender,age) values(?,?,?)";
        try {

            //1.连接数据库
            conn = jdbcUtil.getConnection();

            //2.构建stat对象(在参数中,指定返回自增长列)
            stat = conn.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
            stat.setString(1,"张三");
            stat.setString(2,"男");
            stat.setString(3,"16");

            //3.执行sql
            stat.executeUpdate();

            //4.执行完更新,获取自增长列
            rs = stat.getGeneratedKeys();
            if(rs.next()){
                System.out.println("刚才插入数据的自增长编号是:"+rs.getInt(1));
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }finally {
            jdbcUtil.close(conn, stat,rs);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_38341596/article/details/79999627