初始JDBC

一、下载JDBC的驱动

链接地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java/

二、创建一个项目

创建lib文件夹,把驱动拉进去,右键lib文件夹把驱动添加到library (Add As Library)

三、写代码

  1. // 我的第一个JDBC程序
  2. public class jdbcDemo {
  3. public static void main(String[] args) throws ClassNotFoundException, SQLException {
  4. // 1.加载驱动
  5. Class.forName("com.mysql.jdbc.Driver"); // 固定写法,加载驱动
  6. // 2.用户信息和url
  7. /*
  8. useUnicode=true 支持中文
  9. characterEncoding=utf8 设置中文编码utf8
  10. useSSL=true 使用安全的连接
  11. */
  12. // useUnicode=true 支持中文&characterEncoding=utf8 设置中文编码utf8&useSSL=true 使用安全的连接
  13. String url = "jdbc:mysql://localhost:3306/shuai?useUnicode=true&characterEncoding=utf8&useSSL=true";
  14. String username = "root";
  15. String password = "shuai";
  16. // 3.连接成功,数据库对象
  17. Connection connection = DriverManager.getConnection(url,username,password);
  18. // 4.执行SQL的对象 Statement创建执行sql的对象
  19. Statement statement = connection.createStatement();
  20. // 5.执行SQL的对象 去 执行SQL,可能存在结果,查看返回结果
  21. String sql = "SELECT * FROM userInfo";
  22. ResultSet resultSet = statement.executeQuery(sql); // 返回的结果集,结果集中封装了我们全部的查询出来的结果
  23. while (resultSet.next()){
  24. System.out.println("id=" + resultSet.getObject("id"));
  25. System.out.println("username=" + resultSet.getObject("username"));
  26. System.out.println("password=" + resultSet.getObject("password"));
  27. System.out.println("email=" + resultSet.getObject("email"));
  28. System.out.println("birthday=" + resultSet.getObject("birthday"));
  29. System.out.println("=============================");
  30. }
  31. // 6.释放连接
  32. resultSet.close();
  33. statement.close();
  34. connection.close();
  35. }
  36. }

步骤总结:

  1. 加载驱动
  2. 连接数据库 DriverManager
  3. 获得执行sql的对象 statement
  4. 获得返回的结果集
  5. 释放连接

DriverManager

  1. // DriverManager.registerDriver(new com.mysql.jdbc.Driver()); (不推荐使用,Driver原码中已经注册过了)
  2. Class.forName("com.mysql.jdbc.Driver"); // 固定写法,加载驱动
  3. // connection 代表数据库
  4. connection.rollback(); // 事务回滚
  5. connection.commit(); // 事务提交
  6. connection.setAutoCommit(); // 数据库设置自动提交

URL

  1. String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
  2. // useUnicode=true 支持中文
  3. // characterEncoding=utf8 设置中文编码utf8
  4. // useSSL=true 使用安全的连接

Statement 执行SQL 的对象 prepareStatement 执行SQL 的对象

  1. String sql = "SELECT * FROM userInfo"; // 编写SQL
  2. statement.executeQuery(); // 查询操作返回 ResultSet
  3. statement.execute(); // 执行任何SQL
  4. statement.executeUpdate(); // 更新、插入、删除。都是用这个,返回一个受影响的行数

ResultSet 查询的结果集:封装了所有的查询结果

jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查的查询语句即可

  1. resultSet.getObject(); // 在不知列类型的情况下使用
  2. // 如果知道列的类型就使用指定的类型
  3. resultSet.getInt();
  4. resultSet.getString();
  5. resultSet.getFloat();
  6. resultSet.getDate();

遍历,指针

  1. resultSet.beforeFirst(); // 移动到最前面
  2. resultSet.afterLast(); // 移动到最后面
  3. resultSet.next(); // 移动到下一个数据
  4. resultSet.previous(); // 移动到前一行
  5. resultSet.absolute(row); // 移动到指定行

释放资源

  1. // 6.释放连接(用完关掉,耗资源)
  2. resultSet.close();
  3. statement.close();
  4. connection.close();

JDBC封装成工具类

一、创建db.properties文件

这个文件的作用是数据库的配置文件,里面保存了驱动类、url、用户名、密码和sql语言的信息。

  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc:mysql://localhost:3306/shuai?useUnicode=true&characterEncoding=utf8&useSSL=true
  3. username=root
  4. password=shuai

二、创建工具包utils

  1. public class jdbcUtils {
  2. // 数据源提高作用域
  3. private static String driver = null;
  4. private static String url = null;
  5. private static String username = null;
  6. private static String password = null;
  7. static {
  8. try {
  9. // 通过反射拿到对应的资源流
  10. InputStream in = jdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
  11. Properties properties = new Properties();
  12. properties.load(in);
  13. driver = properties.getProperty("driver");
  14. url = properties.getProperty("url");
  15. username = properties.getProperty("username");
  16. password = properties.getProperty("password");
  17. // 1.驱动只用加载一次
  18. Class.forName(driver);
  19. } catch (Exception e) {
  20. e.printStackTrace();
  21. }
  22. }
  23. // 获取连接
  24. public static Connection getConnection() throws SQLException {
  25. return DriverManager.getConnection(url, username, password);
  26. }
  27. // 释放连接资源
  28. public static void release(Connection conn, Statement st, ResultSet rs){
  29. if (rs!=null){
  30. try {
  31. rs.close();
  32. } catch (SQLException throwables) {
  33. throwables.printStackTrace();
  34. }
  35. }
  36. if (st!=null){
  37. try {
  38. st.close();
  39. } catch (SQLException throwables) {
  40. throwables.printStackTrace();
  41. }
  42. }
  43. if (conn!=null){
  44. try {
  45. conn.close();
  46. } catch (SQLException throwables) {
  47. throwables.printStackTrace();
  48. }
  49. }
  50. }
  51. }

三、代码展示

  1. import com.shuai2.utils.jdbcUtils; // 导入工具包
  2. public static void main(String[] args) {
  3. Connection conn = null;
  4. Statement st = null;
  5. ResultSet rs = null;
  6. try{
  7. conn = jdbcUtils.getConnection(); // 获取数据库连接
  8. st = conn.createStatement(); // 获得SQL的执行对象
  9. String sql = "INSERT INTO userinfo(username,password,email,birthday) VALUES('小王','133','133@qq.com','2001-02-26');";
  10. int i = st.executeUpdate(sql);
  11. if (i>0){
  12. System.out.println("插入成功");
  13. }
  14. } catch (SQLException throwables) {
  15. throwables.printStackTrace();
  16. } finally {
  17. jdbcUtils.release(conn,st,rs);
  18. }
  19. }