• 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. }

  • 相关阅读:
    Go基础16-defer的运作机制及常见用法
    Webpack Chunk 分包规则
    spring笔记一(bean/IoC)
    java开发之个人微信助手的开发
    雅可比旋转求对称矩阵的特征值和特征向量
    C++ Vector的概念和原理和构造
    详细介绍如何使用 NeRF 进行 3D 体积渲染-附源码下载
    c++如何创建项目
    全国职业技能大赛云计算--高职组赛题卷④(容器云)
    Mariadb: error Relay log read failure: Could not parse relay log event entry
  • 原文地址:https://blog.csdn.net/Dream_begin_/article/details/134538653