jdbc环境配置及操作步骤

news2024/11/17 23:41:21

文章目录

  • jdbc
    • 环境配置
    • jdbc 操作步骤

jdbc

环境配置

jdbc开发,需要提前先准备驱动包(下载一个mysql驱动包)及配置(项目配置引入这个驱动包)
下载链接:mysql驱动包
注意:jar包的版本要和自己本地mysql版本一致

1.创建项目,最好把jar包放到项目某个目录
在这里插入图片描述
2.项目右键
在这里插入图片描述
3.添加依赖包
在这里插入图片描述
4.写一段代码,使用jar包中的接口或类,看能否引入
在这里插入图片描述
出现以上即配置完成。

jdbc 操作步骤

1.建立数据库连接:类似打开一个cmd客户端连接到mysql
(1) 方式一:DriverManager

//        Class.forName("com.mysql.jdbc.Driver");

        /**
         * DriverManager是jdbc的api, Connection也是(java.sql开头)
         * url:
         * (1)服务器地址,看看是不是要连接的数据库ip/域名
         * (2)带层次的路径: 数据库名
         * (3)用户名,密码
         */
        Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_test?user=root&password=123456&useUnicode=true&characterEncoding=UTF-8&useSSL=false");

(2)方式二:DataSourse(数据源/数据库连接池)
连接池初始化时,就创建一定数量的数据库连接对象(Connection)
connection.close()只是重置连接对象属性,放回连接池

//使用数据库连接池来获取数据库连接对象
        //一个Java程序,创建多个还是1个连接池对象?一个
        MysqlDataSource ds = new MysqlDataSource();
        //url中的参数,可以使用方法来设置
        ds.setURL("jdbc:mysql://localhost:3306/db_test");
        ds.setUser("root");
        ds.setPassword("123456");
        ds.setUseSSL(false);//不使用安全连接,如果不设置有警告
        //设置编码格式:按某个编码保存数据,也要按一样的编码来使用
        ds.setCharacterEncoding("UTF-8");
//1. 建立数据库连接
        Connection c = ds.getConnection();

(3)DriverManager VS DataSourse

在这里插入图片描述

2.创建操作命令对象Statement:该对象用于执行sql代码

(1)Statement:不带占位符简单操作命令对象(了解)

Statement s = c.createStatement();

(2)预编译的操作命令对象PreparedStatement

带占位符的预编译操作命令对象

//2.创建操作命令对象
        //使用预编译的操作命令对象PreparedStatement
        //sql语句中,可能包含一些客户端网页传入的数据
        String inputName = "数学";//模拟客户端用户传入的id
        //? 是占位符,类似格式化打印中%s, %d,可以替换掉
        String sql = "select id c_id,name c_name from course where name=?";
        PreparedStatement ps = c.prepareStatement(sql);//!!!

        /**
         * 替换占位符: setXXX(index, value)
         * XXX: 值的类型
         * index: 是占位符的索引位置(从1开始)
         * value: 要替换的值
         */
        ps.setString(1, inputName);
        //3.执行sql语句: 可以不加分号了(加上也不会报错)
        ResultSet rs = ps.executeQuery();//预编译的操作命令对象执行无参的方法

优势:提前预编译,效率更高; 防止sql注入,更安全
(3) CallableStatement:用于执行存储过程的

3.执行sql

//3.执行sql语句: 可以不加分号了(加上也不会报错)
        String inputName = "' or '1'='1";//模拟客户端用户输入的

4.如果是查询操作,处理结果集ResultSet ->调用executeQuery,返回结果集
如果是插入,修改,删除操作,调用executeUpdate,返回int表示处理成功多少条

		String sql = "select id c_id,name c_name from course where name='"+inputName+"'";
        System.out.println(sql);
        ResultSet rs = s.executeQuery(sql);

		//4.处理结果集
        while (rs.next()){//遍历每一行数据
            //获取id字段的值
            int id = rs.getInt("c_id");
            String name = rs.getString("c_name");
            System.out.printf("id: %s, name: %s\n", id, name);
        }

在这里插入图片描述
5.释放资源:反向释放(ResultSet,Statement, Connection)都是调用close()释放

插入操作代码

public class CourseInsert {

    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //使用数据库连接池来获取数据库连接对象
        //一个Java程序,创建多个还是1个连接池对象?一个
        MysqlDataSource ds = new MysqlDataSource();
        //url中的参数,可以使用方法来设置
        ds.setURL("jdbc:mysql://localhost:3306/java44");
        ds.setUser("root");
        ds.setPassword("123456");
        ds.setUseSSL(false);//不使用安全连接,如果不设置有警告
        //设置编码格式:按某个编码保存数据,也要按一样的编码来使用
        ds.setCharacterEncoding("UTF-8");
        //1. 建立数据库连接
        Connection c = ds.getConnection();


        //2.创建操作命令对象
        //使用预编译的操作命令对象PreparedStatement
        //sql语句中,可能包含一些客户端网页传入的数据
        String inputName = "王者";//模拟客户端用户传入的id
        //? 是占位符,类似格式化打印中%s, %d,可以替换掉
        String sql = "insert into course(name) values(?)";
        PreparedStatement ps = c.prepareStatement(sql);//!!!!

        /**
         * 替换占位符: setXXX(index, value)
         * XXX: 值的类型
         * index: 是占位符的索引位置(从1开始)
         * value: 要替换的值
         */
        ps.setString(1, inputName);

        //3.执行sql语句: 可以不加分号了(加上也不会报错)
        //插入,修改,删除,都调用executeUpdate,返回int是执行成功多少条
        int n = ps.executeUpdate();//预编译的操作命令对象执行无参的方法 !!!

        System.out.println(n);

        //5.释放资源:反向释放(resultSet, Statement, Connection).close()
    }
}

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

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

相关文章

使用宏基因组的方法快速鉴定新冠病毒SARS-CoV2

使用宏基因组的方法快速鉴定新冠病毒SARS-CoV2 一、如果不考虑成本,可以使用宏基因组测序的方法来快速鉴定新冠病毒SARS-CoV2,这种方法无需扩增、分析简单、准确度高。原理是直接将测序得到的序列数据与分类物种数据库比对,从而得到鉴定结果…

编程参考 - 如何计算字符串的哈希值

字符串的哈希值是什么? 在C,Java等编程语言中,有一种hashmap的数据结构,存储一对key / value,分别是两种对象。 为了加快存取的速度,键值key对象会被转换成一个hash值,一个整数。一般来讲&…

【权限提升】 Windows10 本地提权漏洞复现及详细分析(CVE-2021-1732)

文章目录声明一、漏洞前言二、漏洞描述三、漏洞原理四、漏洞以及EXP分析五、本地复现六、修复补丁声明 本篇文章仅用于技术研究和漏洞复现,切勿将文中涉及操作手法用于非授权下的渗透攻击行为,出现后果与本作者无关,切记!&#x…

Excel 中使用线性回归进行预测公司销售季节性与增长

本文将提供有关如何使用线性回归模型在 Microsoft Excel 中执行简单而强大的预测的分步教程。 我们将探索模型的三种变体,并比较特定单变量数据集的结果——产品在 5 年内的月销售额。三个模型变体将是; 原始线性回归 (LR) 模型。具有季节性的 LR 模型——确定特定月份的销售…

架构师知识体系梳理

文章目录1、架构师的职责和能力1.1 架构师的主要能力1.2 架构师的思维模式1.3 架构师具备的架构原则1.4 架构师深知的架构质量属性1.5 程序设计SOLID原则1.6 架构CAP定理1.7 领域驱动设计DDD2 搜索引擎2.1 系统架构2.2 原理篇2.3 常见问题2.4 质量保障3 分布式缓存架构3.1 系统…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java软件缺陷管理系统o255h

现在毕设刚开始。时间还有很多,可以从头开始学也可以。毕设其实不难,难的是我们懒散到这种时候再去静下心学。能自己独立完成尽量自己独立完成。相信你看过很多上面回答的,都不建议去某宝。毕竟这一行参差不齐哈。能找到靠谱的也不容易。近期…

[附源码]Python计算机毕业设计SSM计算机学院科研信息管理系统(程序+LW)

[附源码]Python计算机毕业设计SSM计算机学院科研信息管理系统(程序LW) 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。…

[附源码]计算机毕业设计JAVA志愿者管理系统论文2022

[附源码]计算机毕业设计JAVA志愿者管理系统论文2022 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM …

[附源码]Python计算机毕业设计SSM基于中职学校的校医务室管理系统(程序+LW)

[附源码]Python计算机毕业设计SSM基于中职学校的校医务室管理系统(程序LW) 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…

实现通过Jenkins api找到job构建人信息并定时发邮件(通过公司邮箱)

需求 在大屏上显示出每个项目的构建情况,如果构建失败,大屏上项目颜色变红的同时要给最新构建这个项目的用户发送邮件,提醒他构建失败了。 准备知识 大屏上显示的项目构建情况,其实是通过Jenkins api 获取的,想要看…

自动部署项目,全靠它了!

前几天我把我的开源项目部署到了云服务器。 我部署的大概流程: 登录到云服务器控制台,新建一个服务器实例(我用的 Ubuntu Linux)。在自己的电脑上生成 SSH 秘钥,将生成的公钥和实例进行绑定。使用 SSH 登录到云服务器…

大数据 linux目录操作

linux 目录操作 常用权限操作 常用权限操作 chgrp命令 功能:修改文件所属组 语法格式:chgrp 用户组 文件(说明:ch - change;grp - group) chown命令 功能:改变文件所有者 语法格式&…

R语言Outliers异常值检测方法比较

识别异常值的方法有很多种,R中有很多不同的方法。 最近我们被客户要求撰写关于异常值检测的研究报告,包括一些图形和统计输出。关于异常值方法的文章结合了理论和实践。理论一切都很好,但异常值是异常值,因为它们不遵循理论。如…

chatGPT能不能有危险活体模型

🍿*★,*:.☆欢迎您/$:*.★* 🍿

【安全狗安全研究】SkidMap挖矿木马研究

近日,安全狗威胁情报中心监测到多起“Skidmap”挖矿木马事件。经研判,这些病毒感染事件是攻击者经Redis未授权访问漏洞攻击的方式植入挖矿木马“SkidMap”导致的。虽然“SkidMap”并非新型的病毒家族,但鉴于该病毒家族一直保持着较高的流行热…

多种方式绘制简单的作废章

作废章是常用的长方形印章,其形式如下图所示(图片来自参考文献1)。印章的形式很简单,就是红色方框内显示作废两个字,其实在网上百度长方形印章的话,可以搜索出很多类似形式的印章,区别仅在于尺寸…

lcd屏调试记录

一,lcd屏介绍 LCD液晶屏的接口类型非常丰富,最常用的接口主要有RGB、MCU、LVDS、MIPI接口。 1、RGB接口 LCD液晶屏的RGB接口通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及三者组合来得到丰富多彩的颜色,RGB分别代表红、绿、蓝三个通道的…

QT:多进程

标题1.多进程2.多线程3.常用方法1.多进程 (1)创建进程对象 QProcess::QProcess(QObject *parent nullptr)(2)启动进程去执行另外一个程序 void QProcess::start(const QString &command) //类似于system()/exec函数族 参数:command --》你要执行的另外一个程序…

36氪2022年Q3总收入同比增长两位数超预期,连续第四个季度盈利,广告收入同比增长20%

12月7日,36氪(证券代码:KRKR)披露2022年第三季度业绩。该季度36氪总收入同比增长11.5%至9461万元,净利润249万元,连续第四个季度实现盈利。 本季度,36氪广告业务持续表现优异,实现了…

windows电脑关机开机后没声音,重启就有声音故障处理方法

今天遇到一件非常奇葩的windows电脑, 从关机状态下进入系统没有声音,且从以下几点判断声卡硬件及驱动不存在故障,详见如下: 1、开机后任务栏右下角声音图标正常 2、声音设置——扬声器/麦克风(Realtek(R) Audio)正常; 3、windows+x键,选择“设备管理器”,找到“音频…