JDBC介绍

JDBC概念

JDBC(Java Data Base Connection):数据库连接,一种标准的Java应用程序接口(Java API),用来连接Java编程语言和数据库

常见的组件

DriverManager:这个类是管理一系列数据库的驱动程序,用来匹配连接的数据的通信协议,识别JDBC下某个子协议的第一驱动程序将被用于建立数据库连接
Driver:接口处理与数据库服务器通信,使用DriverManager管理各种数据库类型的对象,管理的是Driver类型的对象,也抽象与驱动程序对象相关的详细信息
Connection : 此接口具有接触数据库的所有方法。该连接对象表示通信上下文,
即:所有与数据库的通信仅通过这个连接对象进行。
Statement : 使用创建于这个接口的对象将 SQL 语句提交到数据库。
除了执行存储过程以外,一些派生的接口也接受参数。
ResultSet : 在你使用语句对象执行 SQL 查询后,这些对象保存从数据获得的数据。
它作为一个迭代器,让您可以通过它的数据来移动。
SQLException : 这个类处理发生在数据库应用程序的任何错误。

JDBC开发流程

1、准备阶段
下载MySQL的驱动包,使用maven管理

      <!--MySQL驱动包-->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.39</version>
      </dependency>

2、编程阶段

        //1、加载数据库的驱动  "com.mysql.jdbc.Driver" 在5.XXX版本下驱动全路径
        Class.forName("com.mysql.jdbc.Driver");

        try {
            /**
             * 2、获取数据库的连接
             * Connection getConnection(String url,String user, String password)
             * url:连接数据库的信息  =>jdbc:子协议(区分不同的数据库;比MySQL)://ip:端口/库名
             *    =>jdbc:mysql://localhost:3306/test
             * user:用户名
             * password:密码
             */
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");
            System.out.println("连接成功啦");



            //3、创建Statement对象
            Statement statement = connection.createStatement();

            //4、执行相关的SQL
            String sql = "select * from student";
            ResultSet resultSet = statement.executeQuery(sql);

            //5、对结果集处理
            while (resultSet.next()) {
                int sid = resultSet.getInt("SID");
                String sname = resultSet.getString("Sname");
                int sage = resultSet.getInt("Sage");
                System.out.println(sid+","+sname+","+sage);
            }

            //6、关闭资源
            connection.close();
            statement.close();
            resultSet.close();


        } catch (SQLException e) {
            System.out.println("连接失败");
            e.printStackTrace();
        }

常见API

Connection接口
Connection接口:代表数据库连接对象(一个物理连接会话)

创建statement对象

Statement createStatement():创建一个Statement对象
PreparedStatement prepareStatement(String sql):创建一个具有预编译功能PreparedStatement对象
CallableStatement prepareCall(String sql):创建一个具有回调功能的CallableStatement对象

            Statement statement = connection.createStatement();
            String sql = "select * from student where SID = "+SID;
            ResultSet resultSet = statement.executeQuery(sql);

将参数直接拼接在SQL上执行
● 执行语句
int executeUpdate(String sql):执行 DML 语句时返回受影响的行数;执行 DDL 语句时返回 0
int executeUpdate(String sql, int autoGeneratedKeys):执行给定的 DML 语句,并设置此 Statement 生成的自动生成键是否能用于获取
ResultSet executeQuery(String sql):执行 DQL 语句,并返回査询结果对应的 ResultSet 对象
● 批量更新
void addBatch(String sql):将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中
int[] executeBatch():执行一批命令void clearBatch():清空此 Statement 对象的当前 SQL 命令列表
● 获取自动生成主键
ResultSet getGeneratedKeys():获取由于执行此 Statement 对象而创建的所有自动生成的主键

PreparedStatement prepareStatement(String sql):

  //参数在SQL中以"?"占位符形式给定
            PreparedStatement preparedStatement = connection.prepareStatement("select * from student where SID = ? and Sname = ?");
            //调用相应的setXXX方法 void setInt(int parameterIndex, int x) 第一个参数表示参数位置(从1开始)  第二个参数表示值
            preparedStatement.setInt(1,SID);
            preparedStatement.setString(2,"wulun");
            ResultSet resultSet1 = preparedStatement.executeQuery();

将SQL中的参数以“?”占位符表示,参数则通过setXX操作,将SQL和参数分别传递到服务端,进行预编译,如果没有问题,在继续执行,可以避免SQL注入问题
● PreparedStatement 接口,Statement 的子接口,用于执行带占位符(?)参数的 SQL 语句
● 给参数设值即添加到批处理viod setXxx(int parameterIndex, Xxx value):根据索引(从 1 开始)将 SQL 语句中指定位置的参数设置为 value 值,如果不清楚预编译 SQL 语句中各参数的类型,可以使用 setObject() 方法来传入参数void setBlob(int parameterIndex, InputStream inputStream):将指定参数设置为输入流对象void addBatch():将一组参数添加到此 PreparedStatement 对象的批处理命令中(调用前需先为参数设置)
● 执行语句int executeUpdate():执行 DML 语句或 DDL 语句(无须接收 SQL 字符串)ResultSet executeQuery():执行 DQL 语句(无须接收 SQL 字符串)

ResultSet接口:结果集对象
boolean next() 来判断结果集中是否还有数据,并将光标从当前行移动到下一行
XXX getXXX(String columnLabel) 获取该行的指定的列的属性名
XXX getXXX(int columnIndex) 获取该行的索引

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值