JDBC对象解释
1. DriverManager
// DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
Class.forName("com.mysql.cj.jdbc.Driver");// 固定写法,加载驱动
Connection connection = DriverManager.getConnection(url, username, password);
// connection 代表数据库
// 数据库设置自动提交
// 实际提交
// 事务回滚
connection.commit();
connection.rollback();
connection.setAutoCommit(true);
- 这是完整的写法
// 1.加载驱动
DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
- 这是简洁的写法(我们首推)
Class.forName("com.mysql.cj.jdbc.Driver");// 固定写法
Class.forName是一个静态方法,可以用来加载类,使用该方法会执行方法里面静态代码块的内容(初始化)
这是Driver类的源码(里面主要是一个静态代码块):
这里不懂得请看 类加载的过程
2. URL和用户信息
- url:
String url="jdbc:mysql://localhost:3306/jdbcStudy?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=true";
公式
MySQL默认端口号:3306
协议://主机地址:端口号/数据库名?参数1&参数2&参数3&参数4...
- 用户信息:
String username="root";
String password="123456";
Statement,prepareStatement执行SQL的对象
String sql="SELECT * FROM `users`;";// 编写SQL
statement.execute(sql);// 执行任何SQL,返回布尔值
statement.executeQuery(sql);// 执行查询操作,返回ResultSet
statement.executeUpdate(sql);// 更新,插入,删除。都是用这个,返回一个受影响的行数
ResultSet返回的结果集, 封装了我们全部的查询结果
获得指定的数据类型
ResultSet resultSet = statement.executeQuery(sql);//resultSet 封装了我们全部的查询结果
resultSet.getObject(); 在不知道类型的情况下使用
// 如果知道具体的类型就使用指定的类型
resultSet.getString();
resultSet.getInt();
......
遍历:
遍历指针
resultSet.beforeFirst();// 移动到最前面
resultSet.afterLast();// 移动到最后面
resultSet.previous();// 移动到前一行
resultSet.next();// 移动到下一个数据
resultSet.absolute(row);// 移动到指定行
遍历
while (resultSet.next()){
System.out.println("id = "+resultSet.getObject("id"));
System.out.println("NAME = "+resultSet.getObject("NAME"));
System.out.println("PASSWORD = "+resultSet.getObject("PASSWORD"));
System.out.println("email = "+resultSet.getObject("email"));
System.out.println("birthday = "+resultSet.getObject("birthday"));
System.out.println();
}
释放资源
// 6.关闭数据库连接
resultSet.close();
statement.close();
connection.close();
// 耗资源,用完关掉