JDBC-java与数据库的连接

Java DataBase Connectivity(JDBC)& Java数据库连接&笔记总结 Java DataBase Connectivity(JDBC)& Java数据库连接&笔记总结1.JDBC简介2.JDBC发展历史3.使用步骤*4.JDBC中常用的类型与方法4.1.数据库连接基础操作5.工厂方法设计模式 ( 静态工厂方法模式 )5.1.简单工厂设计模式6.DAO6.1.工厂与DAO结合案例7.SQL注入问题 *7.1.解决sql注入问题 *7.2.PreparedStatement 预编译的SQL执行环境7.3.PreparedStatement与Statement谁的性 阅读详情

本文为关于如何使用java语言实现连接、基础地操作数据库的实例。

目录

一.如何在java项目里与数据库的连接创建:

一.在java项目中导入相应的jar包

根据自己使用的工具的版本,选择相应的jar包,本次操作内使用的是mysql-connector-java-5.1.0-bin.jar 上述jar包下载链接

二.通过反射的方法获取jdbc驱动(driver)

若无其他操作,驱动路径一般为”com.mysql.jdbc.Driver”,写法为: Class.forName(driver);

三.获取链接

通过数据库路径、用户名、用户密码三个量,使其进行链接

DriverManager.getConnection(url, user, psw); 

url:数据库路径,一般为jdbc:mysql://localhost:本机设定端口/database_namne
user:用户自设定的数据库用户名
psw:用户自设定的数据库密码

四.相关操作
1.添加数据(增):insert;
2.删除数据(删):delete;
3.改变数据(改):update;
4.查询数据(查):select;

二.关于数据库的创建

show databases; #查询现有数据库
use database_name; #使用某个数据库
show tables; #查询数据库内现有表格
create table dept [if table not exist//中括号内容可省略,类似于java中的手动抛出异常](
        [//自定义变量名]did [//变量类型]int[//长度](4) [//属性描述]primary key auto_increment[若未结束以逗号分割], //primary key主键属性 auto_increment自增长,即id自动计数进行+1
        dName varchar(50),
        dGender varchar(2) not null/*内容不能为空*/ default'男'/*默认值为男*/  comment'性别,默认为男性'//注释 
        descM varchar(80)[//表格创建最后一行不需要添加逗号]
)[//表格类型]ENGINE=MYISAM,[//编码格式]CHARSET = utf8; 

三.相关封装代码

为了实现上述功能而进行了代码的编写与封装,为此创建了
dao:处理数据层,
entity:实体类,
utils:工具类,
impl:服务类;

dao包

1.BaseDao.java

package com.mannoroth.dao;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;


import com.mannoroth.utils.Contants;
import com.mysql.jdbc.PreparedStatement;



public class BaseDao {

    private static Connection connection = null;

    public void init(){
        try {
            Properties properties = new Properties();
            String filename = "database.properties";
            InputStream is = BaseDao.class.getClassLoader().getResourceAsStream(filename);
            properties.load(is);
            Contants.driver= properties.getProperty("driver");
            Contants.url= properties.getProperty("url");
            Contants.user= properties.getProperty("user");
            Contants.psw= properties.getProperty("password");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }


    //创建连接
    public static Connection getConnection(){
        try {
            Class.forName(Contants.driver);
            connection =  DriverManager.getConnection(Contants.url, Contants.user, Contants.psw);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return connection;
    }

    //关闭资源
    public static void close(Connection connection,Statement statement,ResultSet resultSet){
        try {
            if (resultSet != null) {
                resultSet.close();
            }
            if (statement != null) {
                statement.close();
            }
            if (connection != null) {
                connection.close();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    //增删改
    public static int update (String sql,Object[] objects){
        int num = 0;
        connection = getConnection();
        java.sql.PreparedStatement ps = null;
        try {

            ps = connection.prepareStatement(sql);

            if(objects != null && objects.length >0){
                for (int i = 0; i < objects.length; i++) {
                    ps.setObject(i+1, objects[i]);
                }

            }
            num = ps.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally{
            close(connection, ps, null);
        }
        return num;
    }

    //全查
    public static ResultSet selectALL(String sql,Object[] objects){
        ResultSet rs = null;
        connection = getConnection();
        PreparedStatement ps = null;
        try {
            ps = (PreparedStatement) connection.prepareStatement(sql);

            if (objects!= null && objects.length>0) {
                for (int i = 0; i < objects.length; i++) {
                    ps.setObject(i+1, objects[i]);
                }
            }
            rs = ps.executeQuery();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally{
            close(connection, ps, null);
        }

        return rs;
    }

}

2.DeptDao.java

package com.mannoroth.dao;

import java.util.List;

import com.mannoroth.entity.Dept;

public interface DeptDao {

    int insertDept(Dept dept);

    int updateDept (Dept dept);

    int deleteDept(int did);

    List<Dept> selectDpetAll();

    List<Dept> selectDeptDid(int did);

}

impl包

DeptImpl
package com.mannoroth.dao.impl;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.crypto.spec.PSource;

import com.mannoroth.dao.BaseDao;
import com.mannoroth.dao.DeptDao;
import com.mannoroth.entity.Dept;
import com.mysql.jdbc.PreparedStatement;


public class DeptImpl extends BaseDao implements DeptDao{

    @Override
    public int insertDept(Dept dept) {

        String sql = "insert into dept values(?,?,?,?)";

        Object[] objects = {dept.getDid(),dept.getDname(),dept.getDage(),dept.getDmess()};

        int num = this.update(sql, objects);



        return num;
    }

    @Override
    public int updateDept(Dept dept) {

        String sql = "update dept set dName = ? where did = ?";

        Object[] objects = {dept.getDname(),dept.getDid()};

        int num = this.update(sql, objects);

        return num;

    }

    @Override
    public int deleteDept(int did) {

        String sql = "delete from dept where did = ?";

        Object[] objects = {did};

        int num = this.update(sql, objects);

        return num;
    }

    @Override
    public List<Dept> selectDpetAll() {

        String sql = "select * from dept";
        ResultSet rs = this.selectALL(sql, null);
        List<Dept> list = new ArrayList<Dept>();
        try {
            while (rs.next()) {
                int did = rs.getInt("did");
                String dname = rs.getString("dname");
                int dage = rs.getInt("dage");
                String dmess = rs.getString("dmess");
                Dept dept = new Dept(did, dname, dage, dmess);
                list.add(dept);

            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        for (Dept dept : list) {
            System.out.println(dept.toString());
        }
        close(null, null, rs);
        return list;
    }

    @Override
    public List<Dept> selectDeptDid(int did) {
        String sql = "select * from dept where did = ?";
        Object[] objects = {did};
        ResultSet rs = this.selectALL(sql, objects);
        List<Dept> list = new ArrayList<Dept>();
        try {
            while (rs.next()) {
                String dname = rs.getString("dname");
                int dage = rs.getInt("dage");
                String dmess = rs.getString("dmess");
                Dept dept = new Dept(did, dname, dage, dmess);
                list.add(dept);

            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        for (Dept dept : list) {
            System.out.println(dept.toString());
        }
        close(null, null, rs);
        return list;    }


}

entity包

Dept.java

package com.mannoroth.entity;

public class Dept {

    private int did;
    private String dname;
    private int dage;
    private String dmess;
    public int getDid() {
        return did;
    }
    public void setDid(int did) {
        this.did = did;
    }
    public String getDname() {
        return dname;
    }
    public void setDname(String dname) {
        this.dname = dname;
    }
    public int getDage() {
        return dage;
    }
    public void setDage(int dage) {
        this.dage = dage;
    }
    public String getDmess() {
        return dmess;
    }
    public void setDmess(String dmess) {
        this.dmess = dmess;
    }
    public Dept(int did, String dname, int dage, String dmess) {

        this.did = did;
        this.dname = dname;
        this.dage = dage;
        this.dmess = dmess;
    }
    public Dept() {

    }

    public String toString() {
        return "Dept [did=" + did + ", dname=" + dname + ", dage=" + dage
                + ", dmess=" + dmess + "]";
    }


}

utils

contants.java

package com.mannoroth.utils;

public class Contants {
    public static  String driver ;
    public static  String url ;
    public static  String user ;
    public static  String psw;
}

此外,从BaseDao中可以看到有输入流的使用,为从外部读取配置文件”database.properties“。使用这样的方法能极大增强程序的扩展性。

ESP32-S3开发环境避坑指南:VS Code+ESP-IDF离线安装全流程(附国内镜像加速) 本文提供了一份详细的ESP32-S3开发环境离线安装指南,重点解决网络依赖问题。通过整合国内镜像加速,手把手教你完成VS Code、ESP-IDF框架、工具链及Python依赖的本地化部署,实现稳定、可重复的开发环境搭建,大幅提升IoT开发效率。 阅读详情

相关推荐

TI AWR2944毫米波雷达开发板开箱:用官方Demo快速上手3D点云与热图生成

本文详细介绍了TI AWR2944毫米波雷达开发板的开箱与实战应用,包括硬件准备、软件开发环境搭建、Demo固件刷写与配置、实时可视化与数据解析等全流程指南。通过官方Demo快速上手3D点云与热图生成,帮助开发者高效掌握毫米波雷达技术在工业检测、智能交通等领域的应用。

weixin_42627853的博客 308

JDBC实现java数据库连接(附完整例子+超详细注解)

注重版权,转载请注明原作者和原文链接 作者:码农BookSea 原文链接:https://editor.youkuaiyun.com/md?articleId=105959128 本人刚写博客不久,是个新人,望大家能给予一些鼓励。 您的一个赞或者是评论区的一句话都将是对我最大的激励。 简单一句话先来了解下JDBC: JDBC(Java Data Base Connectivity,java数据库连接...

BookSea的博客 1万+

5分钟搞定SNMP工具安装:从Linux到Windows的snmpwalk/snmpget全攻略

本文提供了SNMP工具(snmpwalk/snmpget)在Linux和Windows系统上的快速安装与使用指南,涵盖从基础安装到高阶应用的全面解析。通过详细的命令示例和故障排查技巧,帮助用户快速掌握网络设备监控与诊断的核心技能,提升运维效率。

weixin_29248313的博客 553

JDBC(java数据库连接技术)进行数据库的连接

在Java之中,所有数据库操作的类和接口都保存在java.sql包里面,在这个包里面含有: 一个类:DriverManager类 四个接口:Connection,Statement,ResultSet,PreparedStatement. 所有的连接数据库的操作流程都是固定的,按照以下几个步骤进行: 加载程序的驱动程序(向容器中加载) 进行数据库连接(通过DriverManager类进行加载...

Abby_lxf的博客 325

ARM CMSIS DAP源码分析(二)

今天分析的是RDDI_DAP_GetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)和RDDI_DAP_SetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)这两个函数。 以RDDI_DAP_GetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)为例,代码如下:

pengxiao618的专栏 7977

修勾逃生巨人危机v10.9.9修改版:免广告无限内购与GM工具详解

游戏修改技术是通过对原版游戏程序进行代码层面的调整,实现特定功能的增强或限制解除。其核心原理涉及内存修改、资源替换和API拦截等技术手段,能够有效提升用户体验和测试效率。在移动游戏领域,免广告和无限内购是常见的技术实现方向,通过屏蔽广告SDK调用和修改内购验证逻辑,为用户提供更流畅的游戏体验。这类技术特别适合游戏开发者进行功能测试,以及玩家希望完整体验游戏内容而不受商业模式限制的场景。以修勾逃生巨人危机v10.9.9版本为例,该修改版集成了GM工具开启功能,通过特定操作路径即可激活调试面板,实现了广告去除和

weixin_30855099的博客 2592

java项目中连接数据库_Java开发中如何用JDBC连接起数据库?

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。JDBC链接数据库的方式有:注册驱动:Class.forname("c...

weixin_39540934的博客 265

JEDEC 标准半导体功率循环热阻测试(JESD51 系列)

【代码】JEDEC 标准半导体功率循环热阻测试(JESD51 系列)

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 467

Java数据库连接(Java Database Connectivity,JDBC)

第一个jdbc程序 回到顶部 JDBC简介 Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成。 JDBC为数据库开发人员提供了一个标准的API,使他们能够用纯Java API来编写数据库应用程序。 使用JDBC编写的程序能够自动地将SQL语句传送给

词语大杂烩 2540

【WLAN】【测试】WPS测试方法小结

手机 一般稍微老的手机会支持,新手机反而不支持。 比如小米6(系统版本新的话不支持)在设置——高级设置——WPS连接。 笔记本 有些笔记本(如Surface Laptop 3)天生支持WPS,比如在连接某SSID的时候,会有“也可以通过按路由器上的按钮连接”这样的字样,出来后按AP的WPS按键即可以进行连接。 Qss软件 AP mesh组网中,Controller和Agent之间通过WIFI组网,可使用WPS的方式进行连接。可利用这点用Agent来测试AP的WPS功能。 ...

一介草民,只为生活。 1万+

量化之趋势跟踪策略

趋势跟踪策略 import numpy as np import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt import seaborn as sns from finance import GetData import warnings; warnings.filterwarnings('ignore') data = GetData.get_data('../data/002236.csv') .

木头大左的博客 2533

JDBC(Java DataBase Connectivity)数据库连接

JDBC(Java DataBase Connectivity)数据库连接 Java和数据库之间的关系: Java是面向对象的 数据库是关系型数据库 ORM映射思想:Object Relationship Mapping

嘭嘭啊啊啊的博客 333

MCP+A2A:从实验室到生产环境的落地之旅

本文通过实际项目中的落地案例,展示了 MCP+A2A 协议结合使用的强大功能和广泛适用性。同时,我们也探讨了开发者社区的贡献、与其他技术的融合,以及未来技术趋势的展望。希望本文能够帮助读者更好地理解如何将这一架构从实验室推向生产环境,推动 AI 技术的实际应用。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1493

JDBC? Java Database Connectivity(Java语言连接数据库)

JDBC课堂笔记 1、什么是JDBC? Java DataBase Connectivity 在java语言中编写sql语句,对mysql数据库中的数据进行CRUD操作。 2、JDBC相关的类库在哪里? java.sql.*; 3、JDBC本质上是一堆什么呢? java.sql.*; 这个包下都是JDBC的接口,SUN公司制定的! JDBC是体现“接口作用”的非常经典的例子。 JDBC降低了耦合度,提高了扩展力。 对于java程序员来说,不需要关心数据库是哪个品牌。只要面向JDBC接口编程就行! JDBC整

途中的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JDBC (Java DB Connection)---Java数据库连接

一:JDBC (Java DB Connection)—Java数据库连接 JDBC是一种可用于执行SQL语句的JAVA API(ApplicationProgramming Interface应用程序设计接口)。它由一些Java语言编写的类和界面组成 准备工作:引入JDBC驱动程序 新建lib包,把驱动导入到模块中 JDBC操作数据库----步骤: 注册驱动(只需执行一次) 建立连接(Connection) 获取数据库操作对象(statement执行sql语句) 执行sql语句 处理结果集(Res

m0_52687456的博客 3374

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JDBC(Java DataBase Connectivity)-- java数据库连接

JDBC(Java DataBase Connectivity)-- java数据库连接 一 基本概念 是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。 二 模型图 三 开发缘由 在访问不同的数据库...

qq_43892712的博客 1537

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JDBC(Java DataBase Connectivity,Java 数据库连接)

JDBC(Java DataBase Connectivity,Java 数据库连接) JDBC(Java DataBase Connectivity,Java 数据库连接):sun公司为了简化和统一Java连接数据库,定义的一套规范(类,接口)。 JDBC,是用于Java编程语言和数据库之间的数据库无关连接的标准Java API。 JDBC和MySQL驱动的关系:接口(JDBC)与实现(MySQL驱动jar包)的关系 JDBC API详解 1 ...

m0_61601521的博客 686

4.Java数据库连接_1.JDBC (Java DB Connection)简介

//============================================================================     Mysql安装参考:    http://blog.sina.com.cn/s/blog_13f29f4c30102xrsz.html  Navicat for MySql远程连接linux服务器上数据库     https://...

EminentBoy的博客 1415

Java数据库连接(Java Database Connectivity,JDBC)

SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范(接口),称之为JDBC(Java Data Base Connectivity)。这套接口由数据库厂商去实现,这样,开发人员只需要学习jdbc接口,并通过jdbc加载具体的驱动,就可以操作数据库。

锟斤拷 1308

JDBC:java数据库连接对象

一、JDBC:即Java DataBase Connectivity的缩写。全称为Java数据库连接对象,是java程序和数据库的连接桥梁。 作用:可以为多种关系型数据库DBMS提供统一的访问方式,用Java来操作数据库。 1. JDBC API主要功能:主要干三件事,具体通过以下类/接口实现: DriverManager:管理jdbc驱动 Connection:连接 Sta...

Problem_Girl的博客 5466

JDBC(java Database Connectivity)数据库连接(客户端如何访问数据库):

JDBC(java Database Connectivity)数据库连接(客户端如何访问数据库): 主流架构(两种架构): 1、BS架构(Browser and server)浏览器服务器架构-------》web、javaweb、phpweb 2、CS架构(Client and server)客户端服务器架构---------》QQ、微信 主要是使用java程序对数据库的访问...

lzx2953763519的博客 661

01-JDBC概念--JDBC(Java Database Connectivity:Java数据库连接):使用jdbc实现Java与数据库MySQL连接

1.JDBC(Java Database Connectivity:Java数据库连接)内容概览1.JDBC全称:Java DataBase Connectivity,SUN公司提供的一套操作数据库的标准规范;2.JDBC代表Java数据库链接,与数据库驱动的关系就如接口与实现的关系;3.更加形象描述图 2.JDBC作用与JDBC规范1)作用:它可以放任何类型的表列数据,特别是存储在关系数据库中的

Java仗剑走天涯 2054

JDBC(Java DataBase Connectivity) 称为Java数据库连接

⽤户输⼊的数据中有 SQL 关键字或语法并且参与了 SQL 语句的编译,导致 SQL 语句编译后的条件含义为 true,⼀直得到正确的结果。这种现象称为 SQL 注⼊。需求:实现登录功能,需要通过传⼊的登录名和密码查询数据库表中的⽤户是否存在。如果使⽤的是Statement语句来执⾏sql语句。》请输⼊⽤户名:test1》请输⼊密码:那么将登录成功。

逍遥人世欢 282

JAVA之JDBC连接数据库

JAVA JDBC连接数据库 SQL

qq_53312143的博客 9592

Java-JDBC建立数据库连接(MySQL)

注意:连接数据需要先在JAVA中导入mysql的jar包。

Java小白的博客 2990

数据库——JDBC(Java DataBase Connection数据库连接)

- 第一章JDBC 1.1概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,是Java访问数据库的标准规范 JDBC需要连接驱动,驱动是两个设备要进行通信,满足一定通信数据格式,数据格式由设备提供商规定,设备提供商为设备提供驱动软件,通过软件可以与该设备进行通信。 JDBC是接口,驱动是接口的实现,没有驱动将...

xubuhui的博客 1103
下一篇: jdbc设计模式之单例模式
曜-nawi
博客等级 码龄9年 8粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值