Java-JDBC

JDBC
一 概念
Java Database Connectivity,简称JDBC
JDBC:sun公司定义的一套操作数据库的规范,就是接口
二 四个核心的对象
DriverManager:依据数据库的不同,管理JDBC驱动
Connection: 负责连接数据库并担任传送数据的任务
Statement: 由 Connection 产生、负责执行SQL语句
##三 使用步骤
注册驱动
获取数据库连接对象 Connection
定义sql
获取执行sql语句的对象 Statement
执行sql,接受返回结果
处理结果
释放资源
注册驱动:
Class.forName(“com.mysql.jdbc.Driver”);
括号中的数据不知道怎么写的时候,可以去复制
获取数据库连接对象 Connection,故名思意,连接肯定需要连接的地址,用户名和密码
Connection connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/xinzhi666”, “root”, “root”);
如果java操作数据库的时候有乱码,可以在地址后面跟 ?useUnicode=true&characterEncoding=UTF-8
定义sql语句,就是个字符串,如果需要字符串拼接,注意单引号。
String sql = “update person set name=‘赵琳鹏’ where id=1”;
获取执行sql语句的对象 Statement,是由连接对象创建出来的
Statement statement = connection.createStatement();
执行sql,接受返回结果
1.查询executeQuery(SQL),会有返回值ResultSet,保存了查询的结果
2.增删改executeUpdate(增删改SQL),返回一个数据,表示数据库中受影响的行数
处理结果
ResultSet,可以把ResultSet看成我们java里的set,迭代的时候用next()方法
获取每一列resultSet.getString(),括号中的参数可以是数字,从1开始,表示第几列,也可以是字符串,列名的字符串
释放资源
调用close()的方法
##四 sql注入
statement执行sql语句的时候会有sql注入的风险,所以推荐使用PreparedStatemen
PreparedStatement ps = con.prepareStatement(sql);
sql语句中的参数可以使用?代替
statement.setInt(索引,值); 索引从1开始的
setXXX XXX代表数据类型
查询使用executeQuery(); 增删改使用executeUpdate();
##五 工具类
public class JDBCUtils {
private JDBCUtils(){}
private static String url = “jdbc:mysql://localhost:3306/xinzhi666?useUnicode=true&characterEncoding=UTF-8”;
private static String user=“root”;
private static String password=“root”;
private static String driver=“com.mysql.jdbc.Driver”;
static {
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

public static Connection getConnection(){
    Connection connection = null;
    try {
        connection = DriverManager.getConnection(url,user,password);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return connection;
}

public static void release(Connection connection, Statement statement, ResultSet resultSet){
    if(resultSet!=null){
        try {
            resultSet.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    if(connection!=null){
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    if(statement!=null){
        try {
            statement.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

}
##六 案例
##1 创建jdbc项目,并且导入资料中的jar包
在这里插入图片描述
##2 创建JDBC工具类
package utils;

import java.sql.*;
/**

  • 工具类 ,也有人叫 BaseDao
    */
    public class JDBCUtils {

    private JDBCUtils(){
    }
    public static Connection getConnection(){
    Connection connection = null;
    try {
    Class.forName(“com.mysql.jdbc.Driver”);
    connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/xinzhi666?useUnicode=true&characterEncoding=UTF-8”, “root”, “root”);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (SQLException throwables) {
    throwables.printStackTrace();
    }
    return connection;
    }
    public static void release(ResultSet rs, Statement statement,Connection connection){
    if(rs!=null){
    try {
    rs.close();
    } catch (SQLException throwables) {
    throwables.printStackTrace();
    }
    }
    if(statement!=null){
    try {
    statement.close();
    } catch (SQLException throwables) {
    throwables.printStackTrace();
    }
    }
    if(connection!=null){
    try {
    connection.close();
    } catch (SQLException throwables) {
    throwables.printStackTrace();
    }
    }
    }
    public static void release( Statement statement,Connection connection){
    if(statement!=null){
    try {
    statement.close();
    } catch (SQLException throwables) {
    throwables.printStackTrace();
    }
    }
    if(connection!=null){
    try {
    connection.close();
    } catch (SQLException throwables) {
    throwables.printStackTrace();
    }
    }
    }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值