Java访问数据库,常规操作+提升

本文介绍了Java访问MySQL数据库的常规操作,并提出了一些提升效率的方法。内容包括配置数据库连接jar包,设计数据库表,添加测试数据,以及通过创建domain、util和server包组织代码来实现更方便的功能调用。通过利用getter和setter方法存储数据库数据,编写数据库连接代码,以及在需要时使用foreach循环访问特定值,实现了高效的数据访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java访问数据库,常规操作+提升

当你发现一件事情的套路之后解决起来就容易了~
当然,请确保你配置好了连接数据库的jar包。

  1. 设计mySql数据库表
    在这里插入图片描述
    添加两个测试值
    在这里插入图片描述
  2. 常规操作是:
import cn.gx.home.domain.User;
import java.sql.*;

public class TestCode{
    //数据库连接
    //连接mysql数据库地址
    static String url = "jdbc:mysql://localhost:3306/products";    //表名
    //用户名
    static String root = "root";
    static String pwd = "12138";

    public static void main(String[] args) {
        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.获得链接
            Connection con = DriverManager.getConnection(url, root, pwd);
            //3.通过con获得Statement对象
            PreparedStatement pst = con.prepareStatement("select * from users");
            //4.执行SQL语句获得结果集对象
            ResultSet rs = pst.executeQuery();
            //5.处理结果集
            while (rs.next()){
                //调用re.getXxx()方法获取记录游标执行的行列值
                User user = new User();
                //将数据填入对象
                user.setUsername(rs.getString("name"));
                user.setPassword(rs.getString("password"));
                user.setLimits(rs.getString("limits"));
                System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
            }/*while*/
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

输出结果表明,可以正常访问
在这里插入图片描述
但是一个项目要能够方便调用不同类的不同功能,
写法代码可能有所改变,
下面是个人见解

  1. 对应数据库:创建一个domain包,创建对应类型的数据实现getting和setting方法
    (存储从数据库获取的数据)
    在这里插入图片描述
/*
用户信息类
 */
public class User {
    private String username;        //用户名
    private String password;        //密码
    private String limits;  //权限

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

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

    public String getLimits() {        return limits;    }

    public void setLimits(String limits) {        this.limits = limits;    }
}

2.同理创建util包,编写数据库连接代码
在这里插入图片描述

/*数据库连接类*/
public class DBUtil {
    //连接mysql数据库地址
    static String url = "jdbc:mysql://localhost:3306/products";    //(products)表名
    static String root = "root";    //安装mySql时的账号
    static String pwd = "12138";    //密码
    static Connection conn;
    static{
        //加载驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection(){
        conn = null;
        try {
            conn = DriverManager.getConnection(url, root, pwd);
        } catch (SQLException e) {
            //驱动错误
            e.printStackTrace();
        }
        return conn;
    }/*getCon*/

    public static void closeConnection(){     //关闭连接
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
  1. 创建server包,编写需要访问数据库的功能代
/*
用户服务类
*/
public abstract class UserService {
    Connection conn; //连接对象
    PreparedStatement statement;    //预编译对象
    ResultSet resultSet;    //结果集对象
    User user = null;   //信息对象

    /*查询users信息*/
    public ArrayList<User> queryUser(){
        System.out.println("查询商品列表");
        ArrayList<User> allUsers = new ArrayList<User>();

        //通过数据库查询信息
        conn = DBUtil.getConnection();
        String sql = "select * from users";
        try {
            statement = conn.prepareStatement(sql);
            resultSet = statement.executeQuery();

            while(resultSet.next()) {   //默认指向第一行
                user = new User();
                user.setUsername(resultSet.getString("username"));
                user.setPassword(resultSet.getString("password"));
                user.setLimits(resultSet.getString("limits"));

                allUsers.add(user);     //将对象添加到列表
            }
        } catch (SQLException e) {
            //数据库查询错误处理
            e.printStackTrace();
        }
        finally {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            DBUtil.closeConnection();
        }
        System.out.println(allUsers);
        return allUsers;
    }/*queryUser*/
}

此时的输出结果
在这里插入图片描述
因为是流的形式传递,这是正常结果!
当你要访问具体数值的时候使用foreach循环就可以:

 System.out.println("------------------User详情------------------");
        if (allUsers.size() > 0) {	//通过长度判断是否搜索到商品
            //循环
            for (User user: allUsers) {
                System.out.println("用户名称:" + user.getUsername());
                System.out.println("用户密码:" + user.getPassword());
                System.out.println("用户权限:" + user.getLimits());
            }
            System.out.println("----------------------------------------");
        }else{
            System.out.println("User列表为空!");
        }

访问结果,
在这里插入图片描述
就这样吧,我这时间是23:07——多吃饭多睡觉能补元气~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值