当前位置:   article > 正文

【笔记】JDBC的使用_使用jdbc ,编写代码完成以下功能 根据id查询用户,在控制台输出 添加用户,给出成功

使用jdbc ,编写代码完成以下功能 根据id查询用户,在控制台输出 添加用户,给出成功

目录

源码在码云上

0.jdbc的入门使用

1.查询数据库

2.将结果进行封装

3.查询单个用户, 输出到控制台

1.JDBC操作数据库

1.查询所有用户信息

2.根据id查询用户信息

3.新增用户信息

4.修改用户信息

5.删除用户信息

2.抽取JDBCUtils

3.登录案例演示sql注入

sql注入

使用prepareStatement()

4.使用prepareStatement()进行增删改查

1.add

2.update

3.delete

4.findAll

5.findUserById

5.转账案例演示事务


源码在码云上

传送门:jdbc_demo

0.jdbc的入门使用

1.查询数据库

new Driver()是导包mysql驱动里面的。import com.mysql.jdbc.Driver;

不需要释放资源

Exception in thread "main" java.sql.SQLException: Before start of result set

取数据传入的参数写错了

  1. String url = "jdbc:mysql://localhost:3306/jdbc_demo";
  2. String url = "协议:子协议://主机:端口号 /数据库";
  1. package com.jcli;
  2. import com.mysql.jdbc.Driver;
  3. import java.sql.*;
  4. /**
  5. * 查询所有的用户, 输出到控制台
  6. * - 在java项目模块下,导入mysql驱动包
  7. * - 注册驱动
  8. * - 获得连接
  9. * - 创建执行sql语句对象
  10. * - 执行sql语句,处理结果
  11. * - 释放资源
  12. */
  13. public class Test01_select {
  14. public static void main(String[] args) throws SQLException {
  15. //- 在java项目模块下,导入mysql驱动包
  16. //- 注册驱动
  17. DriverManager.registerDriver(new Driver());//此处导包
  18. //- 获得连接
  19. String url = "jdbc:mysql://localhost:3306/jdbc_demo";
  20. String user = "root";
  21. String password = "root";
  22. Connection connection = DriverManager.getConnection(url, user, password);
  23. //- 创建执行sql语句对象
  24. Statement statement = connection.createStatement();
  25. //- 执行sql语句,处理结果
  26. String sql = "select * from user";
  27. ResultSet resultSet = statement.executeQuery(sql);
  28. // 游标下移,并且判断当前游标指向的行是否有记录(数据),如果有就返回true,否则返回false
  29. while (resultSet.next()) {
  30. //取数据
  31. System.out.println(resultSet.getObject("id"));
  32. System.out.println(resultSet.getObject("username"));
  33. System.out.println(resultSet.getObject("password"));
  34. System.out.println(resultSet.getObject("nickname"));
  35. System.out.println("-------------------------------------");
  36. }
  37. //- 释放资源
  38. resultSet.close();
  39. statement.close();
  40. connection.close();
  41. }
  42. }

2.将结果进行封装

防止null值

3.查询单个用户, 输出到控制台

直接写驱动类名会自动生成路径,idea中

所以sql语句中属性用单引号是因为这样吗

1.JDBC操作数据库

  1. //   1.注册驱动
  2. //   2.获得连接
  3. //   3.创建sql语句执行体
  4. //   4.执行sql语句,处理结果
  5. //   5.释放资源

1.查询所有用户信息

  1. package com.jcli.Test02_CRUD;
  2. import com.jcli.bean.User;
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6. import java.sql.Statement;
  7. import java.util.ArrayList;
  8. /**
  9. * 查询所有用户信息
  10. */
  11. public class Test02_findAll {
  12. public static void main(String[] args) throws Exception {
  13. //1.注册驱动
  14. Class.forName("java.sql.Driver");
  15. //2.获得连接
  16. String url = "jdbc:mysql://localhost:3306/jdbc_demo";
  17. Connection connection = DriverManager.getConnection(url, "root", "root");
  18. // 3.创建sql语句执行对象
  19. Statement statement = connection.createStatement();
  20. // 4.执行sql语句,处理结果
  21. String sql = "select * from user";
  22. ResultSet resultSet = statement.executeQuery(sql);
  23. // 5.创建ArrayList集合,存储user对象
  24. ArrayList<User> list = new ArrayList<>();
  25. // 6.循环取数据
  26. while (resultSet.next()){
  27. // 7.取数据
  28. int id = resultSet.getInt("id");
  29. String username = resultSet.getString("username");
  30. String password = resultSet.getString("password");
  31. String nickname = resultSet.getString("nickname");
  32. // 8.创建user对象
  33. User user = new User();
  34. // 9.赋值
  35. user.setId(id);
  36. user.setUsername(username);
  37. user.setPassword(password);
  38. user.setNickname(nickname);
  39. // 10.把user对象添加到集合
  40. list.add(user);
  41. }
  42. // 11.释放资源
  43. resultSet.close();
  44. statement.close();
  45. connection.close();
  46. // 12.打印集合
  47. for (User user : list) {
  48. System.out.println(user);
  49. }
  50. }
  51. }

2.根据id查询用户信息

3.新增用户信息

4.修改用户信息

5.删除用户信息

为啥会退出错误

2.抽取JDBCUtils

  1. //静态代码块
  2. //   加载db.properties配置文件中的数据
  3. //   1.创建properties对象
  4. //   2.加载配置文件
  5. //   3.给成员变量赋值
  6. //   4.注册驱动
  7. //获得连接
  8. //释放资源
  1. //测试
  2. //   1.注册驱动,获得连接
  3. //   2.创建执行sql语句体
  4. //   3.执行sql语句,处理结果
  5. //   4.释放资源

查询所有

修改用户信息

3.登录案例演示sql注入

在控制台输入用户名和密码,查询数据库,如果数据库存在当前用户,显示登录成功!

如果数据库不存在当前用户,显示登录失败!

就是用户输入账号密码去数据库查询,找到则登录成功

sql注入

原因:因为sql语句是简单的字符串拼接,所以拼接后sql语句的格式可能会改变 解决方案:使用预编译sql语句对象,对sql语句进行预编译,从而固定sql语句的格式 setXXX(参数位置,参数的值)

  1. //- 用户输入用户名和密码
  2. //- 注册驱动,获得连接
  3. //- 创建执行sql语句对象
  4. //- 执行sql语句,处理结果(判断是否登录成功,其实就是判断User对象是否为null)
  5. //- 释放资源 

使用prepareStatement()

4.使用prepareStatement()进行增删改查

  1. //   1.注册驱动,获得连接
  2. //   2.预编译sql语句,得到预编译对象
  3. //   3.为sql语句设置参数
  4. //   4.执行sql语句,数量结果
  5. //   5.释放资源

1.add

2.update

3.delete

4.findAll

5.findUserById

5.转账案例演示事务

  • 管理事务的功能类:Connection接口

    • 开启事务:setAutoCommit(boolean autoCommit); 参数为false,则手动开启事务。

    • 提交事务:commit();

    • 回滚事务:rollback();

  • zs给ls转100, 使用事务进行控制

  1. //- 1.注册驱动,获得连接
  2. //- 2.开启事务
  3. //- 3.预编译sql语句,得到预编译对象
  4. //- 4.设置sql语句参数
  5. //- 5.执行sql语句,处理结果
  6. //- 6.提交事务或者回滚事务
  7. //- 7.释放资源


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/226909
推荐阅读
相关标签
  

闽ICP备14008679号