Java自学第6课:电商项目(2)

1 创建工具类并连接数据库

在工程src右键单击new,新建util包

再创建DBUtil类

数据库交互需要有数据库支持的包,这是官方给出的类库。

先声明1个代码块

    // 静态代码块 只加载1次
    static{
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("mysql初始化失败了,请重新尝试");
            e.printStackTrace();
        } // 通过反射机制 加载驱动
    }

   再写链接的成员方法

    // 写1个方法来获取连接
    // Connection 是一个接口 interface
    public static Connection getConn() {
        Connection conn = null; // 声明此接口 为了调用其方法 从而获取连接
        try {
            // 加载驱动  库
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ebuys?useUnicode=true&characterEncoding=utf8","root","1234");
        } catch (SQLException e) {
            System.out.println("连接失败,是否有启动mysql数据库呢");
            e.printStackTrace();
        }
        return conn;    
    }

写的过程中要不断的指定类是哪个包里的。

在写关闭链接的方法

   public static void closeConn(Connection conn) {
        if(null != conn) {
            try {
                conn.close();
            } catch (SQLException e) {
                System.out.println("关闭失败了");
                e.printStackTrace();
            }
        }
    }
    
    public static void closeState(PreparedStatement pstmt) {
        if(null != pstmt) {
            try {
                pstmt.close();
            } catch (SQLException e) {
                System.out.println("close pstmt error"+pstmt);
                e.printStackTrace();
            }
        }
    }

    public static void closeResult(ResultSet rs) {
        if(null != rs) {
            try {
                rs.close();
            } catch (SQLException e) {
                System.out.println("close rs error"+rs);
                e.printStackTrace();
            }
        }
    }

可以把三个关闭写为一个序贯的方法

    public static void closeAll(Connection conn, PreparedStatement pstmt, ResultSet rs) {
        closeResult(rs);
        closeState(pstmt);
        closeConn(conn);
    }

这时候前三个方法都可以写为私有的了,当然公有的也行。

最后,写一个main方法

    public static void main(String[] args) {
        try {
            DBUtil.getConn();
            System.out.println("数据库连接成功");
        } catch (Exception e) {
            System.out.println("数据库连接失败");
            e.printStackTrace();
        }
        
        
    }

调用了整个连接数据库的过程。下面用java application测试一下

当然 在测试前,先看看服务里mysql是不是在运行中,这时候说mysql数据库链接成功,说明代码没问题。注意用的是java application,syso方法是在console里显示的,不是在网页上,因为这里只是调用数据库,没有在tomcat服务器上运行。

2

为了处理业务,再创建1个控制层的包

再创建1个类,也可以创建servlet

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/125438.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin文件和类为什么不是一对一关系

在Java中,一个类文件的public类名必须和文件名一致,如何不一致就会报异常,但是在kotlin的文件可以和类名一致,也可以不一致。这种特性,就跟c有点像,毕竟c的.h 和 .cpp文件是分开的。只要最终编译的时候对的…

无人机红外相机的畸变矫正

在项目开展过程中,发现大疆M30T的红外相机存在比较明显的畸变问题,因此需要对红外图像进行畸变矫正。在资料检索过程中,发现对红外无人机影像矫正的资料较少,对此,我从相机的成像原理角度出发,探索出一种效…

史上第一款AOSP开发的IDE (支持Java/Kotlin/C++/Jni/Native/Shell/Python)

ASFP Study 史上第一款AOSP开发的IDE (支持Java/Kotlin/C/Jni/Native/Shell/Python) 类似于Android Studio,可用于开发Android系统源码。 Android studio for platform,简称asfp(爱上富婆)。 背景&下载&使用 背景 由…

2022最新版-李宏毅机器学习深度学习课程-P34 自注意力机制类别总结

在课程的transformer视频中,李老师详细介绍了部分self-attention内容,但是self-attention其实还有各种各样的变化形式: 一、Self-attention运算存在的问题 在self-attention中,假设输入序列(query)长度是N…

leetcode:LCP 11. 期望个数统计(python3解法)

难度:简单 某互联网公司一年一度的春招开始了,一共有 n 名面试者入选。每名面试者都会提交一份简历,公司会根据提供的简历资料产生一个预估的能力值,数值越大代表越有可能通过面试。 小 A 和小 B 负责审核面试者,他们均…

Python克隆单个网页

网上所有代码都无法完全克隆单个网页,不是Css,Js下载不下来就是下载下来也不能正常显示,只能自己写了,记得点赞~ 效果如图: 源码与所需的依赖: pip install requests pip install requests beautifulsoup4…

Zigbee—网络层地址分配机制

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:孤雏 0:21━━━━━━️💟──────── 4:14 🔄 ◀️ ⏸ ▶️ ☰ 💗关注…

CSS特效004:hover图片,显示文字或附加层

css实战中,时常会碰见鼠标放在某个区块上,显示出一段文字或者其他附加信息。思路是利用position的层叠关系,将文字层放在图片的上面,display:none; hover的时候层 display:block。 效果图 源代码 /* * Author: 大剑师…

windows系统自动更新中断电导致系统无法开启

windows系统自动更新中断电导致系统无法开启 现象原因解决进入bios拆机更新系统重新安装内存条 现象 前一天晚上电脑出现合上之后风扇继续转的现象,拔掉电源后,第二天开不了机。现象为按压电源键,电源键和充电指示灯亮一次后熄灭&#xff0c…

复盘一个诡异的Bug

该Bug的诡异之处在于这是一个由多种因素综合碰撞之后形成的综合体。纵观整个排查过程,一度被错误的目标误导,花费大量功夫后才找到问题点所在,成熟的组件在没有确凿证据之前不能随意怀疑其稳定性。 前言 此前在接入两台粒径谱仪(…

SPASS-探索性分析

探索性分析的意义 探索性分析更加强大,它是一种在对资料的性质、分布特点等完全不清楚的情况下,对变量进行更深入研究的描述性统计方法。在进行统计分析前,通常需要寻求和确定适合所研究的问题的统计方法, SPSS提供的探索性分析是解决此类问题的有效办法 探索性分析提供了很…

消息中间件 - RocketMQ基础

一个进程内能够创建的线程数量是有限的。 所有中间件的目的: 性能效率上的一个提升代理:帮你去完成一些额外的事情 MQ介绍 MQ概述 MQ全称Message Queue(消息队列),是在消息的传输过程中保存消息的容器&#xff0…

ArcGIS小技巧|四种计算图斑面积的方法

ArcGIS中有多种方法可计算出图斑面积,本文总结了四种方法,是否可堪称史上最全? 1、计算几何 这是最适合非专业人士的方法,直接利用ArcGIS中的计算几何功能进行计算。 a、首先添加一double类型字段,用来存储面积数值。…

论文阅读——Detection Hub(cvpr2023)

Detection Hub: Unifying Object Detection Datasets via Query Adaptation on Language Embedding 一、要解决的问题 大规模数据集可以提高模型性能,但是当训练多类别单一模型时,大规模数据集不能用在目标检测任务上,因为两个困难&#xff1…

【qemu逃逸】XCTF 华为高校挑战赛决赛-pipeline

前言 虚拟机用户名: root 无密码 设备逆向与漏洞分析 程序没有去符合, 还是比较简单. 实例结构体如下: 先总体说一下流程: encode 为 base64 编码函数, decode 为 base64 解码函数. 然后 encPipe 和 decPipe 分别存放编码数据和解码数据, 分别有四个: 其中 EncPipeLine 中…

简单选择排序(c语言代码实现)

选择排序:简单选择排序(不稳定的排序) 简单选择排序是一种基础的排序算法,它的基本思路是在未排序的序列中选择最小(或最大)的元素,将其与序列的第一个元素进行交换,然后在剩余的未…

解决idea启动tomcat控制台中文乱码

#1.tomcat日志中文乱码# 如图这种情况,一般在idea用tomcat跑一个web项目启动后tomcat日志在控制台打印出来会出现中文乱码的情况 解决方案1:tomcat的日志配置文件的编码修改,找到tomcat安装目录conf下的logging.properties,encod…

2022年06月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 有如下Python程序,包含lambda函数,运行该程序后,输出的结果是?( ) g = lambda x,y:x*y print(g(2,3)

【数据结构】树与二叉树(七):二叉树的遍历

文章目录 5.1 树的基本概念5.1.1 树的定义5.1.2 森林的定义5.1.3 树的术语5.1.4 树的表示 5.2 二叉树5.2.1 二叉树1. 定义2. 特点3. 性质引理5.1:二叉树中层数为i的结点至多有 2 i 2^i 2i个,其中 i ≥ 0 i \geq 0 i≥0。引理5.2:高度为k的二叉…

从0到1的Springcloud Alibaba项目,一篇入门!!!

1、新建项目 我们用maven管理项目 第一步:选择maven 第二步:项目命名,项目路径 第三步:进入项目,把src文件夹删掉(不删也没事,主要是用不到这个文件夹) 2、引入项目依赖 在父项目…