JDBC快速入门

0.导入驱动jar包

1.注册驱动

Class.forName("com.mysql.jdbc.Driver");

2.获取连接

String url = "jdbc:mysql://127.0.0.1:3306/db1";
String user = "root";
String password = "123456";

Connection conn = DriverManager.getConnection(url, user, password);

3.定义sql语句

String sql = "UPDATE account SET money = money - 500 WHERE id = 1";

4.获取执行SQL对象

Statement stat = conn.createStatement();

5.执行SQL

int i = stat.executeUpdate(sql);
//返回的是影响了的行数

6.处理返回结果 释放资源

//6.处理返回结果
System.out.println("影响了" + i + "行");
//7.释放资源
stat.close();
conn.close();

DriverManager的API详解

DriverManager的作用:
1.注册驱动
tips:在MySQL5版本后这个步骤可以省略

2.获取数据库连接
static Connection getConnection(String url, String user, String password)
url连接路径的语法:
jdbc:mysql://hostname:port/databaseName?参数键值对1&参数键值对2...
示例: String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";
useSSL = false可以禁用ssl, 关闭警告提示

Connection的API详解

Connection的作用:
1.获取执行SQL的对象
Statement stat = conn.createStatement();
2.管理事务
开启事务 : conn.setAutoCommit(false);
提交事务 : conn.commit();
回滚事务 : conn.rollback();

        try{
            conn.setAutoCommit(false);
            stat.executeUpdate(sql1);
            stat.executeUpdate(sql2);
//省略了处理返回结果和释放资源(释放资源可以交给try)
            conn.commit();
        }catch (Exception e){
            conn.rollback();
            e.printStackTrace();
        }

Statement的API详解

Statement的作用:
1.执行SQL语句
执行DML, DDL语句
int executeUpdate(sql):执行DDL, DML语句
返回值:(1)DML语句影响的行数 (2)DDL执行后也可能返回0, 所以不能靠判断影响行数来判断DDL语句是否执行成功

执行DQL语句
ResultSet executeQuery(sql): 执行DQL语句
返回值:ResultSet结果集对象

ResultSet的API详解

ResultSet的作用:
1.封装了DQL查询语句的结果
boolean next() :(1)将光标从当前位置向前移动一行(2)判断当前行是否为有效行
返回值:
true:有效行,当前行有数据
false:无效行,当前行没有数据
获取查询结果的方法:

        while (rs.next()){
            System.out.println(rs.getInt(1));
        }

        while (rs.next()){
            System.out.println(rs.getInt("money"));
        }

PreparedStatement的API详解

PreparedStatement作用:
1.预编译SQL并执行SQL语句

获取PreparedStatement对象:

//需要先写好SQL语句
String sql = "select * from user where username = ? and password = ?";
PreparedStatement pstat = coon.prepareStatement(sql);

设置参数值

pstat.setString(1, id);
pstat.setString(2, pwd);
//和resultSet类似, 第一列的下标都是1, 而且针对不同的数据类型有不同的方法

执行SQL

ResultSet resultSet = pstat.executeQuery();

数据库连接池

数据库连接池是一个容器, 负责分配, 管理数据库连接
它允许应用程序重复使用一个现有的数据库连接, 而不是再重新建立一个;
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起数据库连接遗漏
好处: 资源重用, 提升系统响应速度, 避免数据库连接遗漏

初步使用数据库连接池的步骤:

//0.导入jar包
        //2.加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("jdbcdemo1/src/druid.properties"));

        //3.获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);

        //4.获取数据库连接Connection
        Connection connection = dataSource.getConnection();

        String sql = "select * from user";

        PreparedStatement pstat = connection.prepareStatement(sql);
        ResultSet rs = pstat.executeQuery();
        while (rs.next()){
            System.out.print(rs.getInt(1));
            System.out.print(rs.getString(2));
            System.out.println(rs.getString(3));
        }