JDBC工具类和JDBC登录案例

news/2024/5/20 9:28:34/文章来源:https://www.cnblogs.com/hungui/p/16813877.html

JDBC工具类:

抽取JDBC工具类:JDBCUtils

目的:简化书写

分析∶

1.注册驱动也抽取

2.抽取一个方法获取连接对象

3.抽取一个方法释放资源

代码实现:

/*** JDBC工具类*/
public class JDBCUtils {private static String url;private static String user;private static String password;private static String driver;/*** 文件的读取,只需要读取一次即可拿到这些值。使用静态代码块*/static {// 读取资源文件,获取值try {// 1.创建Properties集合类Properties pro = new Properties();// 获取src路径下的文件的方式 --->ClassLoader 类加载器ClassLoader classLoader = JDBCUtils.class.getClassLoader();URL res = classLoader.getResource("jdbc.properties");String path = res.getPath();System.out.println(path);// 2.加载文件pro.load(new FileReader(path));// 3.获取数据,赋值url = pro.getProperty("url");user = pro.getProperty("user");password = pro.getProperty("password");driver = pro.getProperty("driver");// 4.注册驱动
            Class.forName(driver);} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}}/*** 获取连接* @return 连接对象*/public static Connection getConnection() throws SQLException {return DriverManager.getConnection(url,user,password);}/*** 释放资源* @param stem* @param conn*/public static void close(Statement stem, Connection conn, ResultSet rs) {if (stem !=null ) {try {stem.close();} catch (SQLException es) {es.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}}
}
 public static void main(String[] args) {List<Emp> list = new JDBCDemo8().findAll1();System.out.println(list);}public List<Emp> findAll1() {List<Emp> list = null;ResultSet res = null;Statement sta = null;Connection conn = null;try {
//            // 1.注册驱动成功
//            Class.forName("com.mysql.jdbc.Driver");
//            // 2.数据库连接
//            conn = DriverManager.getConnection("jdbc:mysql:///mybatis", "root", "root");conn = JDBCUtils.getConnection();// 3.指定sql语句String sql = "select * from emp";// 4.获取sql对象语句sta = conn.createStatement();// 5.执行sqlres = sta.executeQuery(sql);// 6.遍历结果集,封装对象,装载集合Emp emp = null;list = new ArrayList<>();while (res.next()) {// 获取数据int id = res.getInt("id");String name = res.getString("name");String gender = res.getString("gender");double salary = res.getDouble("salary");long join_date = res.getLong("join_date");int dept_id = res.getInt("dept_id");// 创建emp对象emp = new Emp();emp.setId(id);emp.setName(name);emp.setGender(gender);emp.setSalary(salary);emp.setJoin_date(join_date);emp.setDept_id(dept_id);//装载集合
                list.add(emp);}} catch (SQLException es) {es.printStackTrace();} finally {
//            // 7.释放资源
//            // 避免空指针异常
//            if (conn != null) {
//                try {
//                    conn.close();
//                } catch (SQLException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//        // 7.释放资源
//        // 避免空指针异常
//        if (sta != null) {
//            try {
//                sta.close();
//            } catch (SQLException e) {
//                e.printStackTrace();
//            }
//        }
//        // 7.释放资源
//        // 避免空指针异常
//        if (res != null) {
//            try {
//                res.close();
//            } catch (SQLException e) {
//                e.printStackTrace();
//            }
            JDBCUtils.close(sta,conn,res);}return list;}

输出结果:

 

 

 

 

 

 

JDBC登录案例:

练习∶

需求:

1.通过键盘录入用户名和密码

2﹒判断用户是否登录成功

select* from user where username = "" and password = "";

如果这个sql有查询结果,则成功,反之,则失败

步骤:

1.创建数据库表user

CREATE TABLE USER(

id INT PRIMARY KEY AUTO_INCREMENT,

username VARCHAR(32),

PASSwORD VARCHAR( 32)

};

INSERT INTO USER VALUES(NULL, 'zhangsan' , '123");

INSERT INTO USER VALUES(NULL, 'lisi" ,'234' );

代码实现:

public static void main(String[] args) {// 1.键盘录入,接受用户名和密码Scanner sc = new Scanner(System.in);System.out.println("请输入用户名:");String username = sc.nextLine();System.out.println("请输入密码:");String password = sc.nextLine();// 2.调用方法boolean login = JDBCDemo9.login(username, password);// 3.判断结果,输出不同语句if (login) {// 登录成功System.out.println("登录成功");} else {System.out.println("用户名或密码错误!");}}/*** 登录方法* @param username* @param password* @return*/public static boolean login(String username, String password) {if (username == null || password == null) {return false;}//连接数据库判断是否登录成功Connection conn = null;Statement stm = null;ResultSet rs = null;// 1.获取连接try {conn = JDBCUtils.getConnection();// 2.定义sqlString sql = "select * from user where username = '"+username+"' and password = '"+password+"' ";// 3.获取执行sql的对象stm = conn.createStatement();// 4.执行查询rs = stm.executeQuery(sql);// 5.判断return rs.next();//如果有下一行,则返回true} catch (SQLException e) {e.printStackTrace();} finally {JDBCUtils.close(stm,conn,rs);}return false;}

 

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

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

相关文章

Cadence Allegro PCB设计88问解析(十一) 之 Allegro中文件自动保存时间设置

一个学习信号完整性的layout工程师 大家在设计图纸或者编辑文档时&#xff0c;最常点击的应该就是保存图标了。谁也不想因为软件闪退、电脑断电等情况&#xff0c;我们的劳动成果就白白的消失了。在我们用Allegro进行PCB设计&#xff0c;就会有一个自动保存的功能&#xff0c;每…

数字化转型大潮下,企业如何做好绩效管理?

久其EPM白皮书的正式发布&#xff0c;为企业财务的数字化转型实践提供了极具价值的参考。企业绩效管理&#xff08;EPM&#xff09;成为行业热点对于一家企业来说&#xff0c;做好绩效管理究竟有多重要&#xff1f;对于这个问题&#xff0c;全球商界传奇人物、GE前CEO杰克韦尔奇…

事件对象的介绍

● 什么是事件对象&#xff1f;就是当你触发一个事件以后&#xff0c;对该事件的一些描述信息 ● 例如&#xff1a; ○ 你触发一个点击事件时&#xff0c;你点了哪个位置&#xff0c;坐标多少&#xff0c;都在事件对象的属性中体现 ○ 你触发一个键盘事件时&#xff0c;你按下…

探索增强型灰狼优化算法

文章目录一、理论基础1、灰狼优化算法2、探索增强型灰狼优化算法&#xff08;1&#xff09;改进的位置更新公式&#xff08;2&#xff09;非线性控制参数策略&#xff08;3&#xff09;EEGWO算法伪代码二、仿真实验与结果分析三、参考文献一、理论基础 1、灰狼优化算法 请参考…

计算机科学与技术是信息文明时代的入口,是数字世界的基石,是人们必须掌握的基本技能之一

从人类科技发展史的角度看&#xff0c;软件工程&#xff08;计算机编程&#xff09;是刚刚开始的信息文明巨大的趋势中的一部份。人类至今经历过三次工业革命。第一次工业革命的代表是蒸汽机&#xff0c;使得人类拥有了强大的动力。第二次工业革命的代表是电力和石油&#xff0…

高数_第6章无穷级数_幂级数之__阿贝尔定理

阿贝尔定理&#xff1a; 如果幂级数 在 点 x x₀(x₀≠0)处收敛&#xff0c; 则对于适合不等式 |x| < |x₀|的一切x, 都有幂级数 在点 x 处绝对收敛&#xff1b; 反之&#xff0c;如果幂级数 在点 x x₀ (x₀≠0)处发散&#xff0c; 则对于适合不等式 |x| >…

使用Code Chart绘制流程图

Code Chart介绍 Code Chart是一个基于 Javascript 的图表和图表工具&#xff0c;它基于 markdown 语法来简化和加速生成流程图的过程&#xff0c;也不止于生成流程图。 工具地址&#xff1a;https://www.iodraw.com/codechart 图形 头部用graph 或flowchart 关键字来声明流程…

Anaconda安装

文章目录1. Anaconda3简介2. Anaconda3下载3. Anaconda3安装1. Anaconda3简介 Anaconda3 是一个用于 Python 科学计算和机器学习的开源工具&#xff0c;它是 Python 的一个科学计算发行版&#xff0c;支持 Linux、macOS 和 Windows 系统&#xff0c;包含 conda 等众多工具包和…

python抓取Prometheus的数据(使用prometheus-api-client库)

python抓取Prometheus的数据(使用prometheus-api-client库) 0、写在前面 我们要想抓取Prometheus的数据,一般想到的就是requests请求,爬虫的方式来抓取,这是可行的,当然,还有一个第三方库直接封装好了,直接用就行,代码也比较少,源码点进去就能看明白,这个库叫promet…

多链世界的“高速公路”:一文读懂跨链协议演进与未来

当我们发现自己正处于另一个“加密货币寒冬”之中——这在很大程度上是由一系列项目破产、监管打击和宏观看跌推动的——但重要的是&#xff0c;我们不要忽视促成下一次牛市的技术突破和将权力下放的精神重新引入大众。 上一个周期的主题之一仍然是行业参与者讨论的最前沿的主…

无网络机器上,win下vscode客户端通过ssh连接linux服务器

目录 参考文献 前言 下载安装VSCode 下载 安装 下载和安装必要的VSCode插件 下载 安装 客户端通过ssh远程连接linux服务器 下载并安装ssh 远程连接linux服务器 参考文献 Windows使用VSCode远程Linux&#xff08;ConteOS&#xff09;开发/调试C/C&#xff08;超详细…

是真是假,AI可根据声音检测是否感染新冠 准确率达89%

据媒体报道&#xff0c;近日&#xff0c;在西班牙巴塞罗那举行的欧洲呼吸学会国际会议上公布的一项研究显示&#xff0c;AI可通过手机应用程序从人们声音中检测出新冠肺炎感染&#xff0c;其准确率达到89%。 新冠肺炎感染通常会影响上呼吸道和声带&#xff0c;导致一个人的声音…

No6.从零搭建spring-cloud-alibaba微服务框架,实现fegin、gateway、springevent等(一)

代码地址与接口看总目录&#xff1a;【学习笔记】记录冷冷-pig项目的学习过程&#xff0c;大概包括Authorization Server、springcloud、Mybatis Plus~~~_清晨敲代码的博客-CSDN博客 之前只零碎的学习过spring-cloud-alibaba&#xff0c;并没有全面了解过&#xff0c;这次学习p…

React+fetch 发送post请求 处理请求头参数配置

观看本文前 你要对fetch有一些了解 如果不了解可以先查看我的文章 React之初识fetch 通过fetch发送一个简单GET请求 然后我们来看 pust基本语法 fetch("请求地址",{method: post,headers: {Content-Type: application/json,"Authorization": "Bearer…

传统的回调函数与 ES6中的promise回调以及 ES7 的async/await终极的异步同步化

目录 传统的回调函数封装 ES6中的promise 异步同步化&#xff08;终极&#xff09; 传统的回调函数封装 js中的回调函数的理解&#xff1a;回调函数就是传递一个参数化函数&#xff0c;就是将这个函数作为一个参数传到另外一个主函数里面&#xff0c;当那个主函数执行完之后…

ACM MM 2022 Oral | PRVR: 新的文本到视频跨模态检索子任务

作者: 陈先客方向: 跨模态检索学校: 浙江工商大学概览本文介绍一篇ACM MM 2022 Oral的工作。基于传统的跨模态文本-视频检索(Video-to-Text Retrieval, T2VR)任务&#xff0c;该工作提出了一个全新的文本到视频跨模态检索子任务&#xff0c;即部分相关的视频检索(Partially Rel…

vue动态换肤(自定义主题)

前言 有时候一个项目的主题并不能满足所有人的审美, 所以这个时候就需要换肤功能登场了。 下面是一个换肤demo, 思路很简单&#xff0c;定义一个全局css变量&#xff0c;然后在页面根元素获取变量并动态修改这个变量值即可完成。 效果 具体实现 1.准备项目 准备一个含有less、…

什么是开源工作流框架?有什么特点?

在大数据时代&#xff0c;开源工作流框架也成为大家提升办公效率的利器软件之一。那么&#xff0c;什么是开源工作流框架&#xff1f;又有哪些特点&#xff1f;作为低代码平台服务商&#xff0c;流辰信息有责任和义务潜心研发更多优良的软件产品&#xff0c;为各大中型企业提升…

外汇天眼:ThinkMarkets 获得 CySEC 许可证,允许其从塞浦路斯扩展其欧盟服务

澳大利亚零售外汇和差价合约经纪商ThinkMarkets收购了一家获得CySEC许可的公司&#xff0c;并获得了其 CIF 许可证。它正在积极提高其塞浦路斯办事处为欧盟客户服务的能力。 与许多其他经纪人一样&#xff0c;ThinkMarkets过去通过总部位于伦敦并获得 FCA 许可的 TF Global Mar…

使用 RNN 模型从零实现 情感分类(详解)

文章目录说明思路Step1&#xff1a;读取数据集Step2&#xff1a;生成 tokens 数组Step3&#xff1a;使用 Word2Vec 生成词向量Step4&#xff1a;将 tokens 内的词语转化为向量索引Step5&#xff1a;生成训练集与测试集Step6&#xff1a;构建 RNN 循环神经模型Step7&#xff1a;…