JDBC操作

1、概述

JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句

2、JDBC原理

sun公司提供访问数据库规范称为JDBC,而生产厂商提供的规范的实现类称为驱动

JDBC是接口,驱动是接口的实现,没有驱动将无法完成数据库的连接,从而不能操作数据库,每个厂商都需要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都是由数据库厂商提供的

3、JDBC核心接口

JDBC中的核心接口主要包括如下
DriverManger:用来注册驱动并获取Connection;
Connection:最为重要的一个方法就是用来获取Statement对象;
Statement:是用来向数据库发送SQL语句的,这样数据库就会执行发送过来的SQL语句
ResultSet:它是一个迭代器,用于检索查询数据

4、JDBC开发步骤

1、注册驱动
2、获取链接
3、获取语句执行者
4、执行sql语句
5、处理结果
实例代码如下


/**
 * CREATE TABLE USER(
 * USERNAME VARCHAR(30) COMMENT '用户名',
 * PASSWORD VARCHAR(10) COMMENT '密码'
 * )ENGINE=InnoDB AUTO_INCREMENT=1519 DEFAULT CHARSET=utf8;
 *
 * INSERT INTO USER VALUES('张三','123456')
 */
public class JDBCTEST {

    public static void main(String[] args) throws ClassNotFoundException, SQLException {

        //1、注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2、获取链接
        Connection connection = DriverManager.getConnection("jdbc:mysql://192.168.47.151:3306/web", "root", "root");
        //3、获取执行sql语句的对象
        Statement statement = connection.createStatement();
        //4、执行sql语句
        ResultSet resultSet = statement.executeQuery("SELECT * FROM USER ");
        //处理执行结果
        while (resultSet.next()) {
            System.out.println("用户名:" + resultSet.getString(1) + " 密码:" + resultSet.getString("password"));
        }

        resultSet.close();
        statement.close();
        connection.close();
    }
}

5、Connection

Connection connection = DriverManager.getConnection(String url,String user, String password);
Connection对象常用的方法
createStatement():创建向数据库发送sql的Statement对象
prepareStatement(sql):创建向数据库发送预编译sql的PrepareSatement对象
execute(String sql):用于向数据库发送任意sql语句
addBatch(String sql):把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句执行。

6、执行sql语句

Statement statement = connection.createStatement();
Statement 常用方法如下
executeQuery(String sql) :用于向数据发送查询语句。
executeUpdate(String sql):用于向数据库发送insert、update或delete语句
execute(String sql):用于向数据库发送任意sql语句
addBatch(String sql):把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句执行。

6、防止sql注入代码


/**
 * CREATE TABLE USER(
 * USERNAME VARCHAR(30) COMMENT '用户名',
 * PASSWORD VARCHAR(10) COMMENT '密码'
 * )ENGINE=InnoDB AUTO_INCREMENT=1519 DEFAULT CHARSET=utf8;
 *
 * INSERT INTO USER VALUES('张三','123456')
 */
public class JDBCTEST {

    public static void main(String[] args) throws ClassNotFoundException, SQLException {

        //1、注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2、获取链接
        Connection connection = DriverManager.getConnection("jdbc:mysql://192.168.47.151:3306/web", "root", "root");
//        //3、获取执行sql语句的对象
//        Statement statement = connection.createStatement();
//        //4、执行sql语句
//        ResultSet resultSet = statement.executeQuery("SELECT * FROM USER ");

        PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM  USER  WHERE username=? AND password=?");
        preparedStatement.setString(1,"张三");
        preparedStatement.setString(2,"123456");
        ResultSet resultSet = preparedStatement.executeQuery();

        //处理执行结果
        while (resultSet.next()) {
            System.out.println("用户名:" + resultSet.getString(1) + " 密码:" + resultSet.getString("password"));
        }

        resultSet.close();
        //statement.close();
        resultSet.close();
        connection.close();
    }
}
原文地址:https://www.cnblogs.com/haizhilangzi/p/10903100.html