m0_59855477 2021-07-01 10:26 采纳率: 50%
浏览 29
已采纳

java和数据库连接问题

使用图形界面工具实现如图界面,并使用数据库连接技术连接mysql数据库,输入12位账号和小于8位密码后,点击注册按钮添加数据道数据库,点击取消按钮清空输入道数据

img

  • 写回答

3条回答 默认 最新

  • 404警告 2021-07-01 10:33
    关注

    需要驱动私我发给你 连接数据库代码如下 已封装可直接调用:

    package com.cor.util;
    
    import com.sun.rowset.CachedRowSetImpl;
    
    import javax.sql.rowset.CachedRowSet;
    import java.sql.*;
    
    /**
     * @author DBUtil连接数据库
     */
    public class DBUTil {
    
        /**
         * @author DBUtil连接数据库 全局使用常量driver,driverManager
         */
        private static final String DRIVER = "com.mysql.jdbc.Driver";
        private static final String URL = "jdbc:mysql://localhost:3306/campus_online_reservation??useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&useAffectedRows=true&serverTimezone=GMT";
        private static final String USRE = "root";
        private static final String PASSWORD = "root";
    
        /**
         * @return connection获取连接数据库对象
         * @author DBUtil连接数据库
         */
        public static Connection connection() {
            Connection conn = null;
            try {
                Class.forName(DRIVER);
                conn = DriverManager.getConnection(URL, USRE, PASSWORD);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return conn;
        }
    
        /**
         * @return ResultSet返回结果集
         * @author 查询数据库操作
         */
        public static ResultSet doQuery(String sql, Object... objects) {
            Connection conn = connection();
            PreparedStatement pr = null;
            ResultSet rs = null;
            CachedRowSet cach = null; // 构建缓存结果集
            try {
    
                pr = conn.prepareStatement(sql); // 预编译方法输入SQL文
                for (int i = 0; i < objects.length; i++) {
                    pr.setObject(i + 1, objects[i]); // 为占位符赋值
                }
                rs = pr.executeQuery(); // 运行SQL文
                cach = new CachedRowSetImpl(); // 缓存结果集接口指向实现类
                cach.populate(rs); // 添加结果集
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                // 关闭资源回收
                finaly(rs, pr, conn);
            }
    
            return cach; // 返回缓存结果集
        }
    
        /**
         * @return ResultSet返回int类型匹配行数
         * @author 增删改数据库操作
         */
        public static int doUpdate(String sql, Object... objects) {
            Connection conn = connection();
            PreparedStatement pr = null;
            int rs = 0;
            try {
                pr = conn.prepareStatement(sql); // 预编译SQl文
                for (int i = 0; i < objects.length; i++) {
                    pr.setObject(i + 1, objects[i]); // 占位符赋值
                }
                rs = pr.executeUpdate(); // 运行增删改方法
            } catch (SQLException e) {
                e.printStackTrace();
            } finally { // 关闭资源先开后关
                finaly(null, pr, conn);
            }
            return rs; // 返回匹配行数
    
        }
    
        /**
         * @author 关闭资源
         */
        public static void finaly(ResultSet rs, PreparedStatement pr, Connection conn) {
            try {
                // 判断是否为空,不为空关闭资源
                if (rs != null) {
                    rs.close();
                }
                if (pr != null) {
                    pr.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    }
    
    

    把数据库名账号密码改了就好了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#网络安全#的问题:求ensp的网络安全,不要步骤要完成版文件
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥20 使用Photon PUN2解决游戏得分同步的问题
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序