Java Dao模式通过JDBC连接数据库的操作

Java程序访问数据库:

  • 1、获取数据库厂商提供的驱动(jdbc接口的实现类)

如ojdbc14.jar——Oracle数据库驱动jar包

mysql-connector-java-5.1.8-bin.jar——MySQL数据库驱动jar包

自己去网上下载就行。

  • 2、使用JDBC的API访问数据库

连接、SQL语句执行、结果

java.sql.Driver:各个数据库厂商需要实现该接口,驱动的标记

java.sql.Connection:封装和数据库的连接

java.sql.Statement:封装需要执行的SQL语句

java.sql.ResultSet:封装查询的结果集

  • 3、JDBC编程步骤

step1——加载驱动

step2——获取连接对象

step3——执行SQL语句

step4——处理结果集

step5——关闭资源

  • 4、下面给出连接数据库的工具类(自己写的连接MySql数据库,如要连接Oeacle可修改对应参数)
package com.day03;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;//加入Java开发交流君样:756584822一起吹水聊天
public class ConnectionUtils {// 线程单例private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();private static String url;private static String driver;private static String username;private static String password;//加入Java开发交流君样:756584822一起吹水聊天static {Properties props = new Properties();try {// 从属性文件中读取数据库配置信息,以加载类的方式加载配置文件props.load(ConnectionUtils.class.getClassLoader().getResourceAsStream("com/day03/db_mysql.properties"));} catch (IOException e) {}if (props != null) {url = props.getProperty("url");driver = props.getProperty("driver");username = props.getProperty("username");password = props.getProperty("password");// 装载并注册数据库驱动try {Class.forName(driver);} catch (ClassNotFoundException e) {e.printStackTrace();}}}//加入Java开发交流君样:756584822一起吹水聊天public static Connection getConnection() throws SQLException {Connection con = tl.get();if (con == null) {con = DriverManager.getConnection(url, username, password);tl.set(con);}return con;}public static void closeConnection() {Connection con = tl.get();try {if (con != null) {con.close();tl.set(null);}} catch (SQLException e) {e.printStackTrace();}}public static void closeStatement(Statement stmt) {try {if (stmt != null) {stmt.close();}} catch (SQLException e) {e.printStackTrace();}}public static void closeResultSet(ResultSet rs) {try {if (rs != null) {rs.close();}} catch (SQLException e) {e.printStackTrace();}}public static void closeAll(Statement stmt, ResultSet rs){closeConnection();closeStatement(stmt);closeResultSet(rs);}public static void main(String[] args) throws Exception{System.out.println(ConnectionUtils.getConnection());}}

5、配置参数文件db_mysql.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=root

6、Dao模式操作数据库下面是代码示例

1)Emp.java

//实体类
public class Emp {private int id;private String name;private double salary;public int getId() {return id;}@Overridepublic String toString() {return "Emp [id=" + id + ", name=" + name + ", salary=" + salary + "]";}//加入Java开发交流君样:756584822一起吹水聊天public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}public Emp(int id, String name, double salary) {super();this.id = id;this.name = name;this.salary = salary;}public Emp() {super();}public Emp(String name, double salary) {super();this.name = name;this.salary = salary;}
}

2)Dao接口类

import java.util.List;public interface EmpDao {List<Emp> findAllEmp() throws Exception;
}

3)工厂类

public class EmpDaoFactory {// 读取文件中实现类的类名,通过反射实例化public static EmpDao getEmpDao(){return new EmpDaoMySQL();}
}

4)Dao接口实现类

public class EmpDaoMySQL implements EmpDao{public static final String FIND_ALL_EMP = "select * from t_emp";//查询语句public List<Emp> findAllEmp() throws Exception{List<Emp> empList = new ArrayList<Emp>();Connection conn = ConnectionUtils.getConnection();PreparedStatement stmt = conn.prepareStatement(FIND_ALL_EMP);ResultSet rs = stmt.executeQuery();while(rs.next()){int id = rs.getInt(1);String name = rs.getString(2);double salary = rs.getDouble(3);Emp emp = new Emp(id, name, salary);empList.add(emp);}//加入Java开发交流君样:756584822一起吹水聊天ConnectionUtils.closeAll(stmt, rs);return empList;}
}

5)测试类

public class EmpBiz {public static void main(String[] args) throws Exception{EmpDao dao = EmpDaoFactory.getEmpDao();List<Emp> empList = dao.findAllEmp();for(Emp e : empList){System.out.println(e);}}
}

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

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

相关文章

k8s入门你至少需要会哪些

前言相信很多公司都有集成发布pass系统&#xff0c;底层大多数依赖于k8s来进行服务的发布部署/回滚等功能。对于很多业务开发者都是不可见的&#xff0c;在感叹这个东西真好用的同时&#xff0c;想着探一探这背后的原理。今天这篇k8s入门我整理了必会的几个k8s知识点&#xff0…

Windows CE的电源管理之三

本篇将以Windows Mobile为例介绍Windows CE电源管理的实现&#xff0c;大体上&#xff0c;Windows Mobile分为Pocket PC和Smartphone两种版本。这两者之间的主要区别在于触摸屏和电源模型&#xff0c;Smartphone采用的是“Always On”模型。为了说清楚它们的区别&#xff0c;我…

跟你们讲一个鬼故事,TA回来了!

全世界只有3.14 % 的人关注了青少年数学之旅真正决定人与人之间的差距的&#xff0c;其实是我们对事物的见识与内心的格局&#xff0c;见识的深浅决定人生的深浅&#xff0c;格局的大小决定了人生之路是宽是窄。今天给大家推荐几个有深度、有想法的公众号&#xff0c;希望能够给…

java之static关键词的作用

static关键词的作用 1、静态成员变量的语法特定 2、静态函数的语法特定 3、静态代码块的语法特定 定义静态成员变量 Person.java class Person{ static int a; }按照以前可以这么调用 public class Test1{ public static void main(String[] args){ Person person new Per…

分布式事务最终一致性-CAP框架轻松搞定

前言对于分布式事务&#xff0c;常用的解决方案根据一致性的程度可以进行如下划分&#xff1a;强一致性(2PC、3PC)&#xff1a;数据库层面的实现&#xff0c;通过锁定资源&#xff0c;牺牲可用性&#xff0c;保证数据的强一致性&#xff0c;效率相对比较低。弱一致性(TCC)&…

Cus系统beta1.2发布

2019独角兽企业重金招聘Python工程师标准>>> 经过小伙伴的努力&#xff0c;Cus后台管理系统开发完成&#xff0c;完善了后台系统&#xff0c;权限控制&#xff0c;新闻发布&#xff0c;商务合作等等功能 主要功能包括&#xff1a; 后台系统截图 更多后台系统截图请点…

如何打开网页链接

System.Diagnostics.Process.Start("http://news.163.com") 转载于:https://www.cnblogs.com/habin/archive/2008/03/10/1099285.html

区区6位密码,凭什么守护我的百万家产?

全世界只有3.14 % 的人关注了青少年数学之旅今天超模君非常的开心你问为什么&#xff1f;当然是——又双叒可以买新的数学书好开心&#xff01;不过在这欢快的气氛中超模君却听见了小天的叹气声玩笑归玩笑但是银行的密码系统真很安全的吗&#xff1f;今天我们就来讨论下密码学的…

在ie6下实现position-fixed的效果--------续集---对联效果(02)

在ie6下实现position-fixed的效果&#xff0c;这回是实现的对联效果&#xff0c;没有JS在里面的对联效果&#xff0c;但是没有JS的动感。 这个的原理是和《在ie6下实现position-fixed的效果》的是一样的。CSS&#xff1a;1 <style type"text/css">2 *{margin:0…

狐狸和猫

一只猫在森林里遇到一只狐狸&#xff0c;心想&#xff1a;"他又聪明&#xff0c;经验又丰富&#xff0c;挺受人尊重的。"于是它很友好地和狐狸打招呼&#xff1a;"日安&#xff0c;尊敬的狐狸先生&#xff0c;您好吗&#xff1f;这些日子挺艰难的&#xff0c;您…

Java开发之上班摸鱼!写最少的代码!

I 前言 本次分享一下我所知道的如何写最少的代码的小技巧&#xff0c;如果你有更好的方案&#xff0c;欢迎在评论区留言&#xff0c;方案很棒的话&#xff0c;加我交流圈&#xff0c;为你送上冬天的一杯奶茶~ Java&#xff1a;我想返回多个返回值 秀一下Go的多返回值&#xf…

Windows 11 预览版 Build 22000.120 发布

微软现已发布第五个 Windows 11 预览版更新 KB5005188&#xff0c;版本号升级至 Build 22000.120。本次更新面向 Dev 频道和 Beta 频道的 Windows 预览体验成员推出。Windows 11 Insider Preview Build 22000.120 主要变化如下&#xff1a;1.全新的 Family Safety&#xff08;家…

经典SQL语句集锦

来自网络下列语句部分是MsSql语句&#xff0c;不可以在access中使用。SQL分类&#xff1a; DDL—数据定义语言(CREATE&#xff0c;ALTER&#xff0c;DROP&#xff0c;DECLARE) DML—数据操纵语言(SELECT&#xff0c;DELETE&#xff0c;UPDATE&#xff0c;INSERT) DCL—数据控制…

robocopy帮助

一 Robocopy简介 Robocopy 是一个功能超强的32位的文件复制工具&#xff0c;该工具来自windows资源包&#xff0c;可以直接在网上下载。 使用Robocopy你能够拷贝单个目录&#xff0c;或迭代的拷贝目录及其所有的子目录。该工具通过文件是否存在于源目录&#xff0c;目标目录&am…

有趣的灵魂连墓碑都很酷! | 今日趣图

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源别是个沙雕吧&#xff0c;侵权删&#xff09;

如何得到别人的上网帐号和密码

如何得到别人的上网帐号和密码&#xff0c;我在这里介绍几种弱智方法。方案一&#xff1a;利用特洛伊***得到帐号。必备工具&#xff1a;NTESPY、PWLVIEW。优点&#xff1a;只要对方运行了程序就有80%的成功率&#xff0c;而且不需要任何网络***知识&#xff0c;只要能熟悉的操…

Java 泛型 泛型的约束与局限性

不能用基本类型实例化类型参数 不能用类型参数代替基本类型&#xff1a;例如&#xff0c;没有Pair,只有Pair&#xff0c;其原因是类型擦除。擦除之后&#xff0c;Pair类含有Object类型的域&#xff0c;而Object不能存储double值。这体现了Java语言中基本类型的独立状态。 运行…

实施Exchange 2013中的 MailTip

实施Exchange 2013中的 MailTip邮件提示是用户撰写邮件时向其显示的提示性消息。Microsoft Exchange Server 2013 将分析邮件&#xff08;包括向其发送了邮件的收件人的列表&#xff09;&#xff0c;如果检测到潜在问题&#xff0c;它将使用邮件提示在邮件发送之前通知用户。借…

GitHub 的 Action 接入 Stryker.NET 进行自动化测试单元测试鲁棒性

假设有一个捣蛋的小伙伴加入了你的团队&#xff0c;这个捣蛋的小伙伴喜欢乱改代码&#xff0c;请问此时的单元测试能否拦住这些逗比行为&#xff1f;如果不能拦住逗比行为&#xff0c;是否代表着单元测试有所欠缺&#xff0c;或者有某些分支逻辑没有考虑到。本文将告诉大家的 S…

CN Erlounge IV 讲师名单公布及Call For Topic

近期将公布目前已经报名的讲师名单及Topic。那些希望Share Topic的朋友赶快了。 目前累计注册的讲师为12位&#xff08;不包括口头和我打过招呼但实际没有注册的讲师&#xff09;。 也提醒下那些已经注册但是Topic还是TODO的讲师赶紧提供下Topic。 :) 另外&#xff0c;借这个通…