ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JDBC常用api详解

2022-05-10 14:32:58  阅读:44  来源: 互联网

标签:JDBC java name birthday api sql public 详解 String


DriverManager

DriverManager是java.sql包下的一个专门用来管理驱动的一个类,它主要有两个作用:

  1. 注册驱动

注册驱动需要用到的registerDriver方法通过点击Driver类的源码可以发现里面有个静态代码块,随着Driver类的加载自动执行生效,不需要手动去书写

  1. 获取数据库连接
getConnection(String url, String user, String password) 
//尝试建立与给定数据库URL的连接。 

这个方法的返回值是一个connection类型

connection

connection(数据库连接对象)是一个接口,它的作用有两个:

  1. 获取执行sql语句的对象
satatement createstatement();
// 普通执行sql对象

preparedstatement preparestatement(sql);
//预编译sql的执行sql对象:防止sql注入

callableStatement preparecall(sql);
//执行存储过程的对象
  1. 管理事务

在java中开启事务的操作与在mysql里的操作有些许不同

/**
mysql 事务管理

开启事务:begin/start transaction
提交事务:commit
回滚事务:rollback

java 事务管理(connection接口提供的方法)
开启事务:setautocommit(boolean autoconmmit):true为自动提交,false为手动提交,就是开启事务
提交事务:commit();
回滚事务:rollback();
*/

Statement

Statement是一个专门用来执行sql语句的接口,它的作用主要就是用来执行SQL语句

int executeUpdate(sql);
//执行DML,DDL语句,返回值是Int类型,返回受影响的行数,执行DDL语句时执行成功也可能返回0

resultset executequery(sql);
//返回值是resultset。结果集对象

ResultSet

ResultSet是封装了DQL查询语句的结果,是使用DQL查询语言的返回值类型

ResultSet stmt executeQuery(sql);
// 执行DQL语句,返回Resultset对象

可以使用Resultset获取查询的结果

boolean next();
//1.将光标从当前位置向下移动一行
//2. 判断当前行是否为有效行,true:有效行,当前行有数据,false,无效行,当前行没有数据


//获取数据使用getxxx方法,如果表中的列为int数据,那么获取数据就是getint,String类型就是GetString,如:
* getXxx(int count):得到数据类型为Xxx的第count列数据

* getXxx(String name):得到数据类型为Xxx的列名为name的数据
 

把查询到的数据添加到集合:

package com.jdbc;
public class Acction {
    private int id;
    private String name;
    private String birthday;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getBirthday() {
        return birthday;
    }
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
    @Override
    public String toString() {
        return "Acction{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", birthday='" + birthday + '\'' +
                '}';
    }
}
package com.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class JDBCDemo02 {
    public static void main(String[] args)throws Exception {
        //第一步:建立数据库连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1?useSSL=false","root","1234");
        //第二步:编写sql语句
        String sql1="select * from student";
        //第三步:创建执行对象
        Statement stat = conn.createStatement();
        //第四步:用对象执行sql
        ResultSet resultSet = stat.executeQuery(sql1);
        //第五步:创建集合
        List<Acction> list = new ArrayList();
        while (resultSet.next()){
            //第六步:创建数据保存对象
            Acction acction = new Acction();
            int id = resultSet.getInt(1);
            String name = resultSet.getString(2);
            String birthday = resultSet.getString(3);
            //第七步:封装属性保存到实例
            acction.setId(id);
            acction.setName(name);
            acction.setBirthday(birthday);
            //第八步:把封装好的数据添加到集合
            list.add(acction);
        }
        System.out.println(list);
        //第九步:释放资源
        resultSet.close();
        stat.close();
        conn.close();
    }
}

PreparedStatement

preparedStatement是statement的加强版本,它主要可以实现两个功能:

  1. 完成SQL语句的预编译功能

  2. 防止Sql注入

    // 连接mysql服务器    
    Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1?			useSSL=false",user,password);
    //定义sql语句
    String sql1="select * from student where name = ?and password = ?";
    //创建执行对象
    PreparedStatement preparedStatement = conn.prepareStatement(sql1);
    //给?占位符设置值
    preparedStatement.setString(1,user);
    preparedStatement.setString(2,password);
    //执行sql语句
    ResultSet resultSet = preparedStatement.executeQuery();
    //循环查看输出结果
    while(resultset.next()){
        resultset.getString(1);
        resultset.getstring(2);
    }
    

标签:JDBC,java,name,birthday,api,sql,public,详解,String
来源: https://www.cnblogs.com/xiaoheyyds/p/16253396.html

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有