JDBC

一、JDBC是什么?

JDBC(Java Data Base Connectivity) 是 Java 访问数据库的标准规范,程序员使用统一的代码,便可以访问到不同的数据库。

二、普通方法使用JDBC连接数据库

public class jdbc {
    public static void main(String[] args) throws Exception{

       // 1.注册驱动(可以省略从jdbc3开始)
        Class.forName("com.mysql.jdbc.Driver");

       // 2.获取连接 connection连接对象
        String url="jdbc:mysql://localhost:3306/db1?characterEncoding=UTF-8";
        Connection connection=DriverManager.getConnection(url,"root","root");

       // 3.获取语句执行平台 Statement
        Statement statement=connection.createStatement();

		//4.传入需要执行的sql语句
         String sql="select  * from user ";
        //(ResultSet是结果集对象,只有查询的时候会使用到)
        ResultSet resultSet=statement.executeQuery(sql);
        // 处理结果集对象 用resultSet

        //while循环,遍历获取resultSet中的数据
        while (resultSet.next()){
            int id= resultSet.getInt("id");
            String name= resultSet.getString("name");
            System.out.println(id+name);
        }


        //关闭流,先开启的后关闭,跟栈的操作机制是一样的
        resultSet.close();
        statement.close();
        con.close();

    }

}

三、使用JDBC工具类连接数据库并进行一些列操作

JDBC工具类(JDBCUtils)

import java.sql.*;
import static java.lang.Class.forName;

public class JDBCUtils {
    // 1.将连接信息定义为 字符串常量
    public static final String DRIVERNAME = "com.mysql.jdbc.Driver";
    public static final String URL = "jdbc:mysql://localhost:3306/db1?characterEncoding=utf-8";
    public static final String User = "root";
    public static final String PASSWORD = "root";

    // 2.静态代码块(静态代码块是一定可以执行的)(注册驱动是可以省略的因此该代码块理论上来说是可以省略的)
    static {
        try {
            // 注册驱动
            Class.forName(DRIVERNAME);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    //3.获取连接的静态方法
    public static Connection getConnection(){
        try {
            //获取连接对象并返回
            Connection connection = DriverManager.getConnection(URL, User, PASSWORD);
            return connection;

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


    }

    //关闭资源的方法(重载方法,执行查询操作的时候关闭的内容需要多一个流)
    public static void close(Connection connection, Statement statement){
        if(connection !=null && statement !=null ){
            try{
                statement.close();
                connection.close();

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

    public static void close(ResultSet resultSet,Connection connection, Statement statement){
        if(connection !=null && statement !=null && resultSet !=null ){
            try{
                resultSet.close();
                statement.close();
                connection.close();

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

通过JDBCUtils登录数据库

public class Test03 {
    public static void main(String[] args) throws SQLException {
    	//获取连接
        Connection connection= JDBCUtils.getConnection();

        // 使用?占位符的方式来设置参数
        String sql="select * from user where name=? and password=?";
        PreparedStatement preparedStatement=connection.prepareStatement(sql);

        //3.获取用户输入的用户名和密码
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入用户名:");
        String name=sc.nextLine();
        System.out.println("请输入密码:");
        String pass=sc.next();

        // 4.设置参数 使用setXXX(占位符的位置(整数),要设置的值)的方法设置占位符的参数
        preparedStatement.setString(1,name); //设置第一个问号值为name
        preparedStatement.setString(2,pass); //设置第二个问号值为pass

        // 5.执行查询
        ResultSet resultSet=preparedStatement.executeQuery();

        if(resultSet.next()){
            System.out.println("登录成功"+name);
        }else{
            System.out.println("登陆失败!");
        }
		// 6.关闭流操作(注意执行查询操作当中关闭流的时候多一个参数resultSet)
		JDBCUtils.close(connection,preparedStatement,resultSet);
		
    }
}

通过JDBCUtils向数据库中插入数据

public class Test04 {
    public static void main(String[] args) throws SQLException {
		//获取连接
        Connection connection = JDBCUtils.getConnection();
        
		// 使用?占位符的方式来设置参数
        String sql="insert into user values (?,?);";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        Scanner sc=new Scanner(System.in);
        System.out.println("请输入用户名:");
        String name=sc.nextLine();
        System.out.println("请输入密码:");
        String pass=sc.next();
        
		//设置参数 使用setXXX(占位符的位置(整数),要设置的值)的方法设置占位符的参数
        preparedStatement.setString(1, name);
        preparedStatement.setString(2, pass);
        //  执行插入
        System.out.println(sql);
		// 更新数据
        preparedStatement.executeUpdate();
        System.out.println("插入成功!");

		//关闭流
        JDBCUtils.close(connection,preparedStatement);
        
    }
}

上一篇:[SSM]Day1


下一篇:详解JDBC编程六步附模板代码