zoukankan      html  css  js  c++  java
  • 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();
        }
    }
    
  • 相关阅读:
    Linux 下配置多路径及SCSI扫描磁盘重新发现大小
    vSphere vSwitch网络属性配置详解
    勤动脑筋
    如何用visual studio2013编写简单C语言程序
    两个字符窜,在母窜中查找子窜的位置
    如何安装Microsoft Visual C++6.0
    看张子阳如何在30岁前年薪超过30万觉得很有道理几点
    标志位放错了位置
    注意细节
    探索式学习
  • 原文地址:https://www.cnblogs.com/haizhilangzi/p/10903100.html
Copyright © 2011-2022 走看看