ICode9

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

JDBC常用api详解

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

标签: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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

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

ICode9版权所有