当前位置: 首页 > news >正文

10月8日 Jdbc(1)

jdbc

接口是一个类的父类

 java连接数据库, java操作数据库,  把java作为数据库的一个客户端

JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。

​        当然还有第三方公司专门为某一数据库提供驱动,这样的驱动往往不是开源免费的!

jdbc开发步骤:

  1. 编码, 使用jdk提供的jdbc接口(位于java.sql包),

核心接口: java.sql.Connection(连接)

​ java.sql.Statement(发送sql,通知数据库执行)

​ java.sql.ResultSet(获取查询sql的结果集)

一个核心类: java.sql.DriverManager(数据库驱动管理器), 得到数据库的连接对象

jdbc开发步骤:

  1. 添加第三方数据库驱动ja

  1. 编码, 使用jdk提供的jdbc接口(位于java.sql包),

        核心接口: java.sql.Connection(连接)

​         java.sql.Statement(发送sql,通知数据库执行)

​         java.sql.ResultSet(获取查询sql的结果集)

        一个核心类: java.sql.DriverManager(数据库驱动管理器), 得到数据库的连接对象

 jdbc的编码

>1. 项目中导入数据库驱动jar
>2. 加载启动类
>3. 得到连接对象Connection
>4. 创建Statement对象
>5. 编写sql语句(java普通字符串)
>6. 执行之
>7. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据
>8. 关闭资源

实现查询 

import java.sql.*;
import java.util.Date;
import java.util.Scanner;/*** 查询*/
public class Demo2 {public static void main(String[] args) {/*1. 加载启动类2. 得到连接对象Connection3. 创建Statement对象4. 编写sql语句(java普通字符串)5. 执行之6. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据7. 关闭资源*/Connection conn = null;Statement statement = null;ResultSet resultSet = null;try {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8&useSSL=false";conn = DriverManager.getConnection(url, "root", "123");statement = conn.createStatement();System.out.print("请输入要查询员工姓名:");Scanner input = new Scanner(System.in);String name = input.next();String sql = "select * from emp where ename = '"+name+"'";System.out.println(sql);resultSet = statement.executeQuery(sql);//循环获取数据, 一行一行的获取//一定要先调用next()while(resultSet.next()){//获取这一行的单元格中数据// getXxx(int 列序号): 从1开始   Xxx: 数据类型int empNo = resultSet.getInt(1);String ename = resultSet.getString(2);String job = resultSet.getString(3);int mgr = resultSet.getInt(4);Date hiredate = resultSet.getDate(5);double sal = resultSet.getDouble(6);double comm = resultSet.getDouble(7);int deptNo = resultSet.getInt(8);System.out.println(empNo+","+ename+","+job+","+mgr+","+hiredate+","+sal+","+comm+","+deptNo);}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException throwables) {throwables.printStackTrace();}finally{//倒序关try {if(resultSet != null) {resultSet.close();}if(statement != null) {statement.close();}if(conn != null) {conn.close();}} catch (SQLException throwables) {throwables.printStackTrace();}}}
}

使用jdbc操纵数据库

import javax.xml.bind.SchemaOutputResolver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;/*** 使用jdbc操作数据*/
public class Demo1 {public static void main(String[] args) {/*1. 加载启动类2. 得到连接对象Connection3. 创建Statement对象4. 编写sql语句(java普通字符串)5. 执行之6. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据7. 关闭资源*/Connection conn = null;Statement statement = null;try {//1. 加载启动类  反射  核心: ClassClass.forName("com.mysql.jdbc.Driver");//2.得到连接对象Connection  通过DriverManager的静态方法getConnection()String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8&useSSL=false";conn = DriverManager.getConnection(url, "root", "123");//System.out.println(conn);System.out.println("与数据库服务器连接上了...");//3.创建Statement对象statement = conn.createStatement();//4.编写sql语句//System.out.print("请输入要删除的员工编号:");System.out.print("请输入要加薪的员工编号:");Scanner input = new Scanner(System.in);int empno = input.nextInt();//删除//String sql ="delete  from  emp where empno = "+empno;String sql ="update emp set sal = sal + 500 where empno = "+empno;//5.执行之  执行增删改sql:  Statement的 int executeUpdate(sql)//     执行查询sql: Statement的 ResultSet executeQuery(sql)int rs = statement.executeUpdate(sql);if(rs > 0){//System.out.println("删除成功");System.out.println("加薪成功");}} catch (ClassNotFoundException e) {//Driver类找不到//出现原因: 1. 驱动jar没到导入  2. 驱动类包.类名字符串写错e.printStackTrace();} catch (SQLException throwables) {//出现原因: 1. 数据库服务没有开启  2. url写错  3. 用户名错误  4.密码错误throwables.printStackTrace();}finally{//倒序关try {if(statement != null) {statement.close();}if(conn != null) {conn.close();}} catch (SQLException throwables) {throwables.printStackTrace();}}}}

相关文章:

10月8日 Jdbc(1)

jdbc 接口是一个类的父类 java连接数据库, java操作数据库, 把java作为数据库的一个客户端 JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。 ​ …...

SAP 第三方销售/单独采购

一、概述 1. 概念 第三方销售和单独采购都是指接到客户订单后,客户所需产品需要向供应商进行采购,该供应商一般是指外部的供应商,特殊情况下,才可能是集团内部的其他子公司,当是集团内其他子公司时,因为如…...

yxy销售网站后台管理系统

springbootmybatisthymeleaf 第一个练习的项目就是小商品零售平台后台管理系统,但是当时由于业务不熟练,需求分析先不做好,导致在开发的过程中出现了很多问题。 这次首先把需求确定,详细的做好前期准备工作,再来进行…...

【vSphere 8 自签名证书】企业 CA 签名证书替换 vSphere Machine SSL 证书Ⅲ—— 颁发自签名证书

目录 博文摘要5. 使用 Microsoft 证书颁发机构颁发自签名 SSL 证书5.1 登录MADCS5.2 申请证书5.3 选择证书类型5.4 提交CR5.5 下载 Base 64 编码的证书5.6 导出 CA 证书(1)打开 cachain.p7b(2)进入证书导出导向(3&…...

Hadoop3教程(十九):MapReduce之ETL清洗案例

文章目录 (121)ETL数据清洗案例参考文献 (121)ETL数据清洗案例 ETL,即Extract-Transform-Load的缩写,用来描述数据从源端,经过抽取(Extract)、转换(transfor…...

数据库设计阶段-架构真题(五十七)

下面关于联合需求计划JRP叙述,不正确的是()。 JRP是一种相对成本较高但十分有效的需求获取方法在讨论期间尽量避免使用专业术语JRP的主要目的是对需求进行分析和验证在JRP实施之前,应制定详细的议程,并严格遵照议程进…...

python控制Windows桌面程序自动化模块uiautomation

github仓库地址:GitHub - yinkaisheng/Python-UIAutomation-for-Windows: (Donot use 3.7.6,3.8.1):snake:Python 3 wrapper of Microsoft UIAutomation. Support UIAutomation for MFC, WindowsForm, WPF, Modern UI(Metro UI), Qt, IE, Firefox, Chrome ... uiaut…...

Serializable 和Parcelable的区别

Serializable和Parcelable接口可以完成对象的序列化的过程,当我们需要通过Intent和Binder传输数据时就需要使用Parcelable或者Serializable,有时候我们还需要把对象持久化到存储设备上或者通过网络传输给其他客户端,这个时候也需要使用Seriaz…...

dubbogo-02 将服务注册到nacos

增加dubbo配置 dubbo:application:name: gotestmodule: gotestgroup: daoorganization: qiudaozhangowner: qiudaozhangversion: 0.1environment: proregistries:nacosWithCustomGroup:protocol: nacos # 注册中心选择 nacosaddress: 127.0.0.1:8848 # nacos ipgroup: RIDE # …...

postgresql 配置文件 与 修改配置如何启用

2.启用配置 postgresql显式地以表格的方式告诉我们哪些配置项需要重启数据库实例、哪些配置项仅需要重新加载配置文件即可无需重启服务 select name, context from pg_settings context 的值指示具体策略: internal: 编译期间的设置,只有重新编译才能生…...

物联网专业前景怎么样?

物联网专业前景怎么样? 物联网专业在当今技术发展迅速的背景下具有广阔的前景。以下是物联网专业的一些优势和就业前景: 1.市场需求大:物联网作为人工智能、云计算和大数据等技术的结合,已经成为许多行业的核心需求。各行各业都需…...

JVM垃圾回收算法介绍

堆的分代和区域 (年轻代)Young Generation(eden、s0、s1 space) Minor GC (老年代)Old Generation (Tenured space) Major GC|| Full GC (永久代)Permanent…...

紫光同创FPGA实现HSSTLP高速接口通信,8b/10b编解码数据回环,提供PDS工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 GT 高速接口解决方案3、设计思路框架HSSTLP详解HSSTLP基本了解HSSTLP之时钟HSSTLP之PCSHSSTLP之PMAHSSTLP之接口说明 硬件设计HSSTLP IP调用和配置 4、PDS工程详解5、上板调试验证并演示6、福利:工程代码的获取 紫光同创FPGA实…...

Web前端—盒子模型:选择器、PxCook、盒子模型、正则表达式、综合案例(产品卡片与新闻列表)

版本说明 当前版本号[20231019]。 版本修改说明20231018初版20231019补充了综合案例二新闻列表的代码及完善部分代码 目录 文章目录 版本说明目录盒子模型01-选择器结构伪类选择器基本使用:nth-child(公式)伪元素选择器 02-PxCook03-盒子模型盒子模型-组成边框线四个方向单方…...

C++ vector类模拟实现

目录 一、成员变量 二、构造函数 1.默认构造 2.拷贝构造 3.迭代器构造 4.使用n个值构造 5.赋值拷贝 三、析构函数 四、vector重要成员函数 1.size和capacity函数 2.reserve函数 3.resize函数 4.push_back函数 5.insert函数 6.erase函数 7.重载operator[] 一、成…...

FastAPI+Pydantic使用自定义参数校验+自定义异常+全局异常捕获

目录 1 自定义参数校验异常 2 自定义的curr_page_v参数校验函数,如果不合法抛出自定义异常! 3 配置全局异常 1 自定义参数校验异常 # 1.用户自定义异常类型,只要该类继承了Exception类即可 class ValDtoError(Exception):# 初始化def __in…...

Python综合练习题

题目 创建一个系统,里面可以添加学生、添加班级、查看班级里的学生,在控制台输出 效果图 关键代码 完整代码 # -*- coding: UTF-8 -*-#功能 Functionality0 #学生 Student [刘榕榕0, 秦英姿1, 王家乐0, 孟德赫3, 门子伟4, 明展宇5] #班级 Class [大…...

SpringCloud+Nacos集成Seata-1.7.0分布式事务

前言 项目中需要A服务调用B服务,当A服务方法体内出现异常时,若B服务方法已执行,要求B服务能够进行回滚,需要借助分布式事务实现。Seata是一个比较成熟的分布式事务工具,但官方文档比较简洁,查阅网上资料也…...

任务调度框架-如何实现定时任务+RabbitMQ事务+手动ACK

任务调度框架 Java中如何实现定时任务? 比如: 1.每天早上6点定时执行 2.每月最后一个工作日,考勤统计 3.每个月25号信用卡还款 4.会员生日祝福 5.每隔3秒,自动提醒 10分钟的超时订单的自动取消,每隔30秒或1分钟查询…...

修炼k8s+flink+hdfs+dlink(六:学习k8s)

一:增(创建)。 直接进行创建。 kubectl run nginx --imagenginx使用yaml清单方式进行创建。 二:删除。 kubectl delete pods/nginx 三:修改。 kubectl exec -it my-nginx – /bin/bash 四:查看。 …...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...