• Javaweb实现数据库简单的增删改查


    JDBC介绍

    JDBC Java Data Base Connectivity 是一 Java 访问 数据库 的技术,它提供 执行 SQL 语句的 Java API ,由 一组 和接口组成,可以为 不同的 数据库提供统一访问

    JDBC工作原理

    JDBC应用编程

    1、准备工作

    安装 MySQL
    创建数据库 ( db ) 及表 (user) 的结构、插入一条数据(可借助工具)
    项目中引入连接 MySQL JDBC 驱动 Jar 文件。 不同版本的 MySQL ,其 JDBC 驱动文件不同。
    MyEclipse 的数据库浏览器视图 下,可视化方式创建 MySQL 数据库的连接。
    这一步不是 必需的 也可使用 navicat  for MySQL 等工具 。但是创建 连接的 作用是, JDBC 编程需要 使用这些连接参数

    2、JDBC编程步骤

    1)注册JDBC驱动程序

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

    或者DriverManager.registerDriver(new com.mysql.jdbc.Driver());

    Class.forName () 方法是要求 JVM 查找并加载指定的类到内存
    MySQL 5.6/5.7 JDBC 驱动 类: com.mysql.jdbc.Driver
    MySQL 8.0 的驱动类: com.mysql.cj.jdbc.Driver

    (2)建立数据库连接Connection

    String url="jdbc:mysql://localhost:3306/db";

    String user="root";

    String password="mysqladmin";

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

    Connection java.sql 包中的一个接口
    通过调用 DriverManager 的静态方法 getConnection 可以创建 Connection 对象

    (3)创建并执行SQL语句Statement实际应用我们用的是PreparedStatement 

    Statement stmt=conn.createStatement(); //conn为上一步创建的连接

    String sql="select * from user";

    ResultSet rs=stmt.executeQuery(sql);

    Connection 接口的 createStatement () 用于创建语句 Statement
    Statement 接口的 executeQuery (String sql ) 方法用于执行 sql 查询,返回值为 ResultSet 接口类型。

    4)处理执行结果集ResultSet

    while(rs.next()){ //rs为上一步返回的结果集

        String name=rs.getString("username");

        String pass=rs.getString("password");

        System.out.printf("用户名:%s,口令:%s\n",name,pass);

    }

    结果集的 next() 方法返回一个 boolean ,没有到达记录末尾时 ,返回 true ,否则返回 false

    结果集getString(String columnLabel) ,该方法根据表中的列名获取当前记录指定列的值

    (5)释放资源

    rs.close();      //关闭结果集

    stmt.close();  //关闭语句

    conn.close();  //关闭连接

    关闭资源的顺序是先 关闭结果 集,再 关闭 语句,最后 关闭 连接,后创建的先关闭。(与创建的顺序相反)

    JDBC实现增加、删除和修改操作

    开发工具:myeclipse2014、MySQL8.0【MySQL】MySQL8.0安装教程: https://blog.csdn.net/Trista_1999/article/details/132678207

    文件结构:

    User类:

    1. package javabean;
    2. public class User {
    3. private String username;
    4. private String password;
    5. public String getUsername() {
    6. return username;
    7. }
    8. public void setUsername(String username) {
    9. this.username = username;
    10. }
    11. public String getPassword() {
    12. return password;
    13. }
    14. public void setPassword(String password) {
    15. this.password = password;
    16. }
    17. }

    UserDAO类:实现数据库连接和增删改查

    1. package javabean;
    2. import java.sql.Connection;
    3. import java.sql.DriverManager;
    4. import java.sql.PreparedStatement;
    5. import java.sql.ResultSet;
    6. import java.sql.SQLException;
    7. import java.sql.Statement;
    8. import java.util.ArrayList;
    9. import java.util.List;
    10. public class UserDAO {
    11. //查询
    12. public static List searchAll() throws ClassNotFoundException, SQLException{
    13. Listusers=new ArrayList<>();
    14. //注册JDBC驱动程序
    15. Connection conn = getConnection();
    16. //创建并执行SQL语句PreparedStatement
    17. String sql="select* from user";
    18. PreparedStatement ps=conn.prepareStatement(sql);
    19. ResultSet rs = ps.executeQuery();
    20. //处理执行结果集ResultSet
    21. while(rs.next()){
    22. String username = rs.getString("username");
    23. String password = rs.getString("password");
    24. User user=new User();
    25. user.setUsername(username);
    26. user.setPassword(password);
    27. users.add(user);
    28. }
    29. //释放资源
    30. rs.close();
    31. ps.close();
    32. conn.close();
    33. return users;
    34. }
    35. //getConnection函数,注册JDBC驱动程序并建立数据库连接Connection
    36. private static Connection getConnection() throws ClassNotFoundException,
    37. SQLException {
    38. //注册JDBC驱动程序
    39. Class.forName("com.mysql.cj.jdbc.Driver");
    40. String url="jdbc:mysql://localhost:3306/db";
    41. //建立数据库连接Connection
    42. Connection conn=DriverManager.getConnection(url, "root", "root");
    43. return conn;
    44. }
    45. //添加
    46. public boolean add(User user) throws SQLException, ClassNotFoundException{
    47. Connection conn = getConnection();
    48. String sql="insert into user(username,password) values (?,?)";
    49. PreparedStatement ps=conn.prepareStatement(sql);
    50. ps.setString(1, user.getUsername());
    51. ps.setString(2, user.getPassword());
    52. System.out.print(sql);
    53. int res=ps.executeUpdate();
    54. ps.close();
    55. conn.close();
    56. return res==1;
    57. }
    58. //更新
    59. public boolean update(User user) throws SQLException, ClassNotFoundException{
    60. Connection conn = getConnection();
    61. String sql="update user password=? where username=?";
    62. PreparedStatement ps=conn.prepareStatement(sql);
    63. ps.setString(1, user.getPassword());
    64. ps.setString(2, user.getUsername());
    65. System.out.print(sql);
    66. int res=ps.executeUpdate();
    67. ps.close();
    68. conn.close();
    69. return res==1;
    70. }
    71. //删除
    72. public boolean delete(String username) throws SQLException, ClassNotFoundException{
    73. Connection conn = getConnection();
    74. String sql="delete from user where username=?";
    75. PreparedStatement ps=conn.prepareStatement(sql);
    76. ps.setString(1, username);
    77. System.out.print(sql);
    78. int res=ps.executeUpdate();
    79. ps.close();
    80. conn.close();
    81. return res==1;
    82. }
    83. }

  • 相关阅读:
    软考高级系统架构设计师系列之:系统开发基础知识
    全部常用邮件端口25、109、110、143、465、995、993、994
    替换SlowFast中Detectron2为Yolov8
    Vue--1.4Vue指令
    nb!免费api大全分享
    LeetCode 452. 用最少数量的箭引爆气球
    linux 下使用 sar -n 命令查看Kbps、bps的带宽速率
    新能源汽车智能化,集度先行一步
    Talk预告 | 中国科学技术大学和微软亚洲研究院联合培养博士生冷燚冲:语音识别的快速纠错模型FastCorrect
    Log4j 2再现新漏洞;缺乏资助不是开源软件安全的唯一问题;微软公布 Entity Framework 7.0 计划 | 开源日报
  • 原文地址:https://blog.csdn.net/Dream_begin_/article/details/134538653