实验十 JDBC编程 学校实验作业

实验目的

掌握JDBC编程,能够访问数据库,掌握对数据库的表实现增查删改等操作,并能够将数据库操作应用于系统开发中。

实验报告

本实验提交纸质版实验报告,将源代码和运行结果按实验报告模板编辑后打印。

实验内容
  1. 使用MySQL(或SQL Server)数据库管理系统,建立名为“Information”数据库,在该数据库中创建名为“userInfo”的数据表,用于存储用户注册时在注册界面输入的用户信息,包括:用户名、密码等,为“userInfo”表设置主键。
  2. 编写User.java类,该类对应于数据库的userInfo表,其成员变量和数据库字段相对应,提供对成员变量操作的方法,比如:成员变量的set方法和get方法等。
  3. 编写类数据库连接类DBUtil.java,该类实现连接数据库的功能,该类模板如下:
  4. 编写数据访问类UserDao.java(Data Access Object,DAO),该类负责提供方法对User表进行增查删改等所有操作,其它类需要对User表进行增查删改等操作时直接该使用该类。
    add(User user)方法:添加一个用户的信息到User表中,如果用户已经存在则不重复添加。
    query(String name)方法:按用户姓名查找用户,还可以根据其他字段查询用户。
    delete(String name)方法:删除一个用户记录,比如:根据用户名或编号删除某个用户。
    update()方法:更新用户信息,比如:修改密码。
    queryAll()方法:遍历并显示所有用户信息。
  5. 编写测试类Test.java,测试以下功能,该类模板如下::
    a) 添加一个新用户
    b) 按新用户名查询用户
    c) 修改用户密码
    d) 删除新用户
    e) 查询并显示所有用户

解答如下:

mysql准备代码:

CREATE DATABASE information;

USE information;

CREATE TABLE userInfo (
    name VARCHAR(255) PRIMARY KEY,
    password VARCHAR(255)
);

INSERT INTO userInfo VALUES ('超强','chaoqiang');
INSERT INTO userInfo VALUES ('王五','wangwu');
INSERT INTO userInfo VALUES ('李四','lisi');

实验各类源码:

/**
 * @title: ${}
 * @Author FengXQ
 * @Date: 2021/11/15 8:37
 * @Version 1.0
 */
public class User {
    String name;
    String password;

    public User(String name, String password) {
        this.name = name;
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public User() {
    }

}

package jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @title: ${}
 * @Author FengXQ
 * @Date: 2021/11/15 8:48
 * @Version 1.0
 */
/*UserDao.java, 是专为User类设计的数据访问类,该类使用JDBC编程提供数据的增查删改的服务,所有需要操作数据库的sql语句均包含在该类中。 */
public class UserDao {
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    //构造方法
    User user = null;

    public UserDao(Connection conn, PreparedStatement ps) {
        this.conn = conn;
        this.ps = ps;
    }

    public UserDao() {
        DBUtil.connetcDB();
        conn = DBUtil.getConn();
    }

    //方法
    public void addStudent(User user) {

        try {
            this.user = user;
            String sql = "INSERT INTO  userInfo VALUES ( ? ,  ? )";
            ps = conn.prepareStatement(sql);
            ps.setString(1, user.name);
            ps.setString(2, user.password);
            ps.execute();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    public void query(String name) {
        String sql = "SELECT * FROM userInfo WHERE name = ? ";
        try {
            ps = conn.prepareStatement(sql);
            ps.setString(1, name);
            rs = ps.executeQuery();
            while (rs.next()) {
                System.out.println("name = "+
                        rs.getString("name")+
                        "password = "+
                        rs.getString("password"));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    public void delete(String name) {
        String sql = "DELETE FROM userInfo WHERE name = ?";
        try {
            ps = conn.prepareStatement(sql);
            ps.setString(1, name);
            ps.execute();
            System.out.println("已经删除名字为"+ name +" 的用户的数据");
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }

    public void update() {
        String sql = "UPDATE userInfo SET password = 'passwordUpdated' WHERE name = '张三'";
        try {
            ps = conn.prepareStatement(sql);
            ps.execute();
            System.out.println("已经修改了张三的的数据");
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    public void queryAll() {
        String sql = "SELECT * FROM userInfo";
        try {
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();
            System.out.println("当前表内全部结果,如下:");
            while(rs.next()){
                String name = rs.getString("name");
                String password = rs.getString("password");
                System.out.println(name + ", " +password);
            }
            System.out.println("");

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }
}


package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * @title: ${}
 * @Author FengXQ
 * @Date: 2021/11/15 8:39
 * @Version 1.0
 */
//数据库连接类,需要连接数据库时使用该类
public class DBUtil {
    //设置数据库参数
    private static final String URL = "jdbc:mysql://localhost:3306/Information";
    private static final String USER = "root";
    private static final String PASSWORD = "nihao123";
    private static Connection conn = null;

    //connetcDB方法:连接数据库
    public static void connetcDB() {
//补充与数据库建立连接的代码
        try {

            conn = DriverManager.getConnection(URL,USER,PASSWORD);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

//getConnection方法:返回所建立的数据库连接,即:Connection对象

    public  static Connection getConn() {
        return conn;
    }
}

package jdbc;

/**
 * @title: ${}
 * @Author FengXQ
 * @Date: 2021/11/15 9:02
 * @Version 1.0
 */
//Test.java
public class Test{
    public static void main(String[] args) throws Exception {
        UserDao userDao=new UserDao();
        Class.forName("com.mysql.cj.jdbc.Driver");
        System.out.println("操作之前:");
        userDao.queryAll();
        //添加用户
        User user=new User();
        user.setName("张三");
        user.setPassword("12345");
        userDao.addStudent(user);
        System.out.println("\n添加了一个用户后:");
        userDao.queryAll();

        //查询叫张三的用户的数据;
        System.out.println("查询叫张三的人");
        userDao.query("张三");
        System.out.println("");

        //删除叫李四的用户的数据;
        userDao.delete("李四");
        userDao.queryAll();

        //修改张三的密码;
        userDao.update();
        userDao.queryAll();

        //查询全部的数据;
        userDao.queryAll();
    }
}


实验结果如下:

请添加图片描述

  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴趣使然的小小

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值