Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 代码发布 › JAVA实验:JDBC编程实现数据库操作

JAVA实验:JDBC编程实现数据库操作

Eswlnk的头像
Eswlnk
2021-11-22 17:47:23
JAVA实验:JDBC编程实现数据库操作-Eswlnk Blog
智能摘要 AI
本文围绕JDBC实验展开,主要内容包括使用MySQL数据库管理系统创建“Information”数据库及“userInfo”表,设计相关Java类实现数据库操作。具体步骤如下: 1. 创建数据库和表,并定义用户信息(用户名、密码)。 2. 编写`User.java`类映射数据库表字段。 3. 实现`DBUtil.java`连接数据库。 4. 编写`UserDao.java`提供增、查、删、改功能。 5. 编写`Test.java`测试上述功能。 实验过程中遇到的问题包括无法连接数据库、SQL语句错误等,通过检查MySQL配置、验证SQL语句解决了这些问题。最终代码已上传至Gitee仓库,可供下载。

0x00 课题内容

JAVA实验:JDBC编程实现数据库操作-Eswlnk Blog
JDBC实验

实验十 文件操作练习

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

类说明
UserDao.java数据库操作
User.java用户类
DBUtil.java连接数据库
Test.java测试类
类说明

0x01 源代码

UserDao.java

package DBUtil;
import java.sql.*;
public class UserDao {
    Connection conn;
    ResultSet rs = null;
    UserDao() { //初始化自动连接到数据库
        DBUtil.connetcDB();
        this.conn = DBUtil.getConnection(); //获得链接
    }
    public void add(User user) { //返回是否添加成功

        String sql = "insert into userinfo(ID,username,password) values(?,?,?)";

        try {
            PreparedStatement st = conn.prepareStatement(sql);
            st.setString(1, user.getID());
            st.setString(2, user.getUsername());
            st.setString(3, user.getPassword());
            int result = st.executeUpdate();
            System.out.println("成功添加用户" + user.getUsername() + ",影响行数:" +
                result + "\n");
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
    public void queryByName(String name) { //返回一个javasql记录
        String sql = "SELECT * from userinfo where username = ?"; //查询
        try {
            PreparedStatement st = conn.prepareStatement(sql);
            st.setString(1, name);
            rs = st.executeQuery();
            while (rs.next()) {
                String ID = rs.getString(1);
                String name1 = rs.getString(2);
                String password = rs.getString(3);
                System.out.println("成功查询到以下数据:");
                System.out.println("ID\t\t用户名\t\t密码"); //输出
                System.out.println(ID + "\t\t" + name1 + "\t\t\t" + password + "\n"); //输出
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    public void deleteByName(String name) {
        String sql = "delete from userinfo where username = ?";
        try {
            PreparedStatement st = conn.prepareStatement(sql);
            st.setString(1, name);
            int result = st.executeUpdate();
            System.out.println("成功删除用户:" + name + "\t影响行数:" + result + "\n");
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    public void updatePassword(String name, String password) {
        String sql = "update userinfo set password = ? where username = ?";

        try {
            PreparedStatement st = conn.prepareStatement(sql);
            st.setString(1, password);
            st.setString(2, name);
            int n = st.executeUpdate();
            System.out.println("更新用户:" + name + "成功,影响行数:" + n + "\n");
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
    public void queryAll() {
        String sql = "select * from userinfo";
        try {
            PreparedStatement st = conn.prepareStatement(sql);
            rs = st.executeQuery(sql);
            System.out.println("全部用户信息如下:");
            System.out.println("ID\t\t用户名\t\t密码"); //输出
            while (rs.next()) {
                String ID = rs.getString(1);
                String name = rs.getString(2);
                String password = rs.getString(3);
                System.out.println(ID + "\t\t" + name + "\t\t\t" + password); //输出
            }

            System.out.println("\n");
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

User.java

package DBUtil;
public class User {
    private String username;
    private String password;
    private String Id;
    public User() {
    }
    public String getUsername() {
        return username;
    }
    public String getPassword() {
        return password;
    }
    public String getID()
    {
        return Id;
    }
    public void setName(String username) {
        this.username = username;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public void setID(String ID) {
        this.Id = ID;
    }
}

DBUtil.java

package DBUtil;

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

public class DBUtil {
    //设置数据库参数
    private static final  String driver = "com.mysql.cj.jdbc.Driver";
    private static final String URL = "jdbc:mysql://127.0.0.1:3306/information?useSSL=true&characterEncoding=utf-8&serverTimezone=GMT";
    private static final String USER = "information";
    private static final String PASSWORD = "123456";
    private static Connection conn = null;

    //connetcDB方法:连接数据库
    public static void connetcDB() {
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(URL,USER,PASSWORD);
        }
            catch (SQLException | ClassNotFoundException throwables) {
            throwables.printStackTrace();
        }

    }
    //getConnection方法:返回所建立的数据库连接,即:Connection对象
    public static Connection getConnection() {
        return conn;
    }
    public static void closeConnection(){
        try {
            conn.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
    DBUtil(){
    }
}

Test.java

package DBUtil;
public class test {
    public static void main(String[] args) {
        UserDao userDao = new UserDao();
        //查询所有用户
        userDao.queryAll();
        //通过姓名删除用户
        userDao.deleteByName("张三");
        userDao.queryAll();

        //添加一个用户
        User user = new User();
        user.setID("007");
        user.setName("张三");
        user.setPassword("abcde");
        userDao.add(user);

        //        通过姓名查询用户
        userDao.queryByName("张三");

        //        修改新用户的密码
        userDao.updatePassword("张三", "56789");
        userDao.queryByName("张三");
        //关闭数据库连接
        DBUtil.closeConnection();
    }
}

0x02 测试结果

运行窗口截图:

JAVA实验:JDBC编程实现数据库操作-Eswlnk Blog
运行窗口

Mysql截图:

JAVA实验:JDBC编程实现数据库操作-Eswlnk Blog
表段数据1
JAVA实验:JDBC编程实现数据库操作-Eswlnk Blog
表段数据2

0x03 问题及解决方案

实验中的问题:

  • 无法正常连接到数据库;
  • 无法正常执行SQL语句;
  • 执行SQL语句使用错误;

解决方案:

  • 检测Mysql是否正常启动,重新设置数据库名和密码,修改数据库连接地址为localhost或127.0.0.1,导入JDBC驱动,再次连接数据库即可正常回显。
  • 验证SQL语句是否正确,并将SQL语句在Mysql执行,执行正确并返回正确的信息,替换错误的SQL语句即可正常执行。
  • executeUpdate和executeQuery区分,前者执行增删改,返回修改影响的行数;而后者执行查询,返回SQL记录,迭代器用法。

0x04 Gitee开源仓库

本文代码已经上传至Gitee上的仓库

JAVA实验:JDBC编程实现数据库操作-Eswlnk Blog
Gitee
Gitee项目仓库
下载
包含本文源码
类型: JAVA

本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
javaJDBC数据库
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
WordPress开发日志:自定义后台登录界面
上一篇
WordPress开发日志:二次修改WP七牛云存储插件适应GIF
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「攻防对抗」利用 fastjson 原生反序列化与动态代理突破安全限制
  • 「插件分享」WP Migrate DB Pro | WordPress数据一键迁移工具
  • 「日志记录」逆向必应翻译网页版API实现免费调用
  • 「代码分享」第三方平台VIP视频解析API接口
  • 「至臻原创」某系统网站登录功能监测
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

「日志记录」Debian12网络流量监控与自动关机脚本
2024-04-29 13:56:37
「代码测试」使用假设和 Pytest 在 Python 中开始基于属性的测试
2023-01-20 19:07:10
Hexo博客魔改友链页面_实现自定义提交与个性化设置
2022-04-30 15:13:56

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.673 秒   |  SQL查询 57 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈