Java 连接数据库

数据库:存储数据(集中管理)

目的: 文件中的数据能够放在数据库中集中管理

管理方法:一个项目一个库,每个库中包含最小化数据的表

开发: 节省存储空间,节省运行空间,采用数据库,架构

Java连接数据库

Java se所有类String ArrayList来自java.lang

后面web页面应用----à导包,包第三包 jar包

mysql-connector-java.jar 连接数据库的版本  

java面向接口,提供了数据库的相关接口,每个不同的数据库厂家根据接口开发方法。Java使用数据库,调用对应接口的实现。

反射

连接:Connection 连接

在Driver类中connect方法就是数据库连接方法,方法返回类型Connection

Connection接口中方法就是操作数据库的相关方法

Java原生DriverManager,方便程序员开发方便

DriverManager调用Connection, getConnection

调用DriverManager.getConnection(数据库地址,用户名,密码 );

先把mysql-connect-java包导入到idea的库中

首先建一个包

这个package取名lib

把使用的java包拷贝在lib的package目录下。

在项目名称上右键,点击 open Module setting 模块设置。

在出现的对话框中,左侧点击library库,然后右边点击加号,添加这个jar包。

点击加号后,选择java

出现的对话框,选择自己项目下的jar 包文件

这里是一个询问的信息

直接点击ok即可。继续ok即可。

这时项目中的jar包就会解开。

解开后,才知道java包如何导入。

使用代码连接java,再规范化开发(面向接口)

连接java效仿mysql源码,注册驱动。

DriverManager.registerDriver(new Driver());

获取Connection连接接口,因为数据库的操作方法都在这里。

Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/shop","root","admin");

连接时输入mysql 数据库的连接地址。

getConnection输入数据库的连接地址
本地localhost,连接端口号 3306,连接数据库
jdbc:mysql://localhost:3306/shop
用户名 root
密码  admin

通过连接执行sql语句,需要定义sql语句。

String sql="select * from user";

在connection操作数据库前面有两个Statement , ResultSet

 Statement 是执行sql语句的线程。

//Statement进行线程语句的处理
Statement st=conn.createStatement();

Statement是线程语句的处理,statement中可以执行语句

executeQuery执行查询,返回的类型是ResultSet,这是数据库结果记录

executeUpdate执行更新(增删改)

统一方法;execute执行增删改查,返回值是布尔型,不能查询后返回记录的条件(除登录)

如果执行查询,结果返回ResultSet

//查询的方法executeQuery,结果是ResultSet
ResultSet rs=st.executeQuery(sql);

在Resultset中看到next()方法,一定用到Iterator迭代器,这个迭代器可以用next();ResultSet是一个迭代器

只能使用迭代器的方法来使用。返回类型:next()有没有,数据库中把指针移到当前数据。

ResultSet中next方法的原理。

 在ResultSet类中都要get后面跟上类型。因为java 和mysql 都是强语言类型,数据必须指明类型。Java 获取字段类型一定要跟mysql里对应字段类型是一致的。

ResultSet rs=st.executeQuery(sql);
//因为ResultSetnext()判断数据是否有,如果有一直做,执行一次next(),记录在restulSet
while(rs.next()){
    //按照mysql的类型和java类型对应关系取数据
    int id=rs.getInt("id");
    String name=rs.getString("username");
    String sex=rs.getString("sex");
    String position=rs.getString("position");
    int age=rs.getInt("age");
    String password=rs.getString("password");
    System.out.println(id+":"+name+":"+sex+":"+position+":"+age+":"+password);
}

在数据方法中,Connection中有方法close(),close()关闭。

   这里的问题:

DriverManager.registerDriver(new Driver());

注册Driver时,new Driver中源码中静态块中也发生new Driver()

我们这里的代码执行两次,目的是注册驱动

在源码中,获取连接本身具备

Reflection.getCallerClass()

Reflection类是 反射

通过反射技术注册类

注意:java 只出规范,其他的应用按照规范去开发,java在每一个规范中都有反射去找到相关的类。

直接使用反射技术把驱动注册。

正确连接数据库使用方法
(1)注册驱动(反射)

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

(2)获取连接

Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/shop","root","admin");

(3)定义sql语句

String sql="select * from user";

(4)获取Statement

Statement st=conn.createStatement();

(5)根据需要决定,如果查询executeQuer,如果更新executeUpdate

ResultSet rs=st.executeQuery(sql);

返回结果:如果是查询用ResultSet,如果是增删改,返回的是int

如果是ResultSet使用迭代器遍历next()方法

(6)根据mysql的数据类型与java 的数据类型的对应关系,使用对应的get方法,得出结果.

(7)最后依次关闭ResultSet,Statement,Connection。

rs.close();
st.close();
conn.close();

开发:基本的单表增删改查

  1. 面向接口,需要有接口文件

这里的方法:增删改查

一个属性和一个值对应关系(Map,面向对象)

按照java思想理念,面向对象,没有方法是逻辑关系,它就是java bean)

(2) 面向对象,把数据库记录中的字段封装成一个类。

 Java bean在开发中,就是对应的数据库的表

代码在码云Gitee:
java连接数据库代码 · 6446e40 · zyt/麦当劳投资人 - Gitee.comicon-default.png?t=N7T8https://gitee.com/zytscode/mcdonalds-investors/commit/6446e40afa37b4dedbc54dbf2b06cac585005b52

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

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

相关文章

ELK分布式日志管理平台部署

目录 一、ELK概述 1、ELK概念: 2、其他数据收集工具: 3、ELK工作流程图: 4、ELK 的工作原理: 5、日志系统的特征: 二、实验部署: 1、ELK Elasticsearch 集群部署 2、安装 Elasticsearch-head 插件 …

【HTTP协议】简述HTTP协议的概念和特点

🎊专栏【网络编程】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🥰欢迎并且感谢大家指出小吉的问题 文章目录 🌺概念🌺特点🎄请求协议🎄响应协议…

map()的用法

JavaScript Array map() 方法 先说说这个方法浏览器的支持: 支持五大主流的浏览器, 特别注意:IE 9 以下的浏览器不支持,只支持IE 9以上的版本的浏览器 特别注意:IE 9 以下的浏览器不支持,只支持IE 9以上的…

uniapp微信小程序地图实现绘制polygon(保姆级教程 全网最全!!!)

用户需求:需要在填写表单信息时,在地图上标绘自己房屋的位置信息。 这个问题处理了很久,在网上也没有找到全面的相关案例,所以我将我的思路分享给大家,希望可以解决大家遇到的问题。如果大家有更好的思路,…

分享几种 Java8 中通过 Stream 对列表进行去重的方法

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 1. Stream 的 distinct…

java商城系统选型技巧

近期有很多网友在知乎、百度上咨询如何选择java商城系统,本文我们介绍目前有哪些java商城系统,如何选择商城系统,希望有所帮助。 我们之前做过调研,目前java语言开发的商城系统主要有shop、javashop、ejavashop、远丰、mall4j、li…

重测序项目文章 | Fungal Diversity(IF:20.3)发表杯伞科真菌系统分类和毒蝇碱进化的研究

Clitocybaceae(杯伞科)是近期建立的真菌家族。目前,由于取样和用于系统发育分析的基因有限,该家族内的亚科分化和关系尚不清晰。该家族的一些蘑菇含有神经毒性毒蕈碱,导致全球范围内许多严重甚至致命的中毒事件。然而&…

vue2使用ElementUI

elementui官网:组件 | Element 1、全部引入 下载:npm i element-ui 在 main.js 中写入以下内容:import Vue from vue; import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; import App from ./App.vue;Vue.use(…

『Fiddler数据抓包功攻略』| 如何使用Fiddler进行数据抓包与分析?

『Fiddler数据抓包功攻略』| 如何使用Fiddler进行数据抓包与分析? 1 关于Fiddler2 Fiddler安装3 Fiddler信息查看3.1 查看请求信息3.2 查看响应信息3.3 查看会话信息统计 4 Fiddler暂停抓包5 Fiddler清除抓包数据6 Fiddler设置Filters过滤6.1 关于Actions6.2 关于Us…

c++ day 4

代码整理&#xff0c; 将学过的三种运算符重载&#xff0c;每个至少实现一个运算符的重载:分别是-&#xff0c;-&#xff0c;<。 #include <iostream>using namespace std; class Stu {friend const Stu operator-(const Stu &L,const Stu &R);friend bool o…

picgo配置又拍云

又拍云控制台配置操作员账号 添加操作员账号 进入又拍云的控制台 又拍云控制台 (upyun.com) 右上角选择账号下拉框&#xff0c;选择账户管理 在账户管理中&#xff0c;选择操作员&#xff0c;添加操作员 输入操作员名字&#xff0c;点击生成密码&#xff0c;填入操作员备注…

音频修复和增强软件iZotope RX 10 mac特点介绍

iZotope RX 10 mac是一款音频修复和增强软件&#xff0c;主要特点包括&#xff1a; 声音修复&#xff1a;iZotope RX 10可以去除不良噪音、杂音、吱吱声等&#xff0c;使音频变得更加清晰干净。 音频增强&#xff1a;iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限…

Jinja2使用Layui报 “d is not defined“

问题出现场景在使用Jinja2渲染Layui的表格时候&#xff0c;要做自定义templte的传入 Jinja2这块本来就是支持 {{ }} 插值的模板语言&#xff0c;所以这块的第一种渲染方式会冲突 所以只能用函数返回代码块进行填充&#xff0c;不能使用插值&#xff0c;只能拼接字符串 templt…

web项目添加防调试

新建js文件debug-vconsole.js /**防止非法调试*/ (function () {function getLocationHrefParams(name) {var reg new RegExp("(^|&)" name "([^&]*)(&|$)");var r window.location.search.substr(1).match(reg);if (r ! null) return un…

docker部署elasticsearch+kibana+head

前言 最近&#xff0c;项目需要使用elasticsearch&#xff0c;所以就想快速安装一个使用&#xff0c;最开始是docker安装了7.10.1版本。 后面计划使用Java开发&#xff0c;发现有 RestHighLevelClient 和 Elasticsearch Java API Client两种客户端连接方式。 然后网上查阅了一…

【微服务 SpringCloudAlibaba】实用篇 · Nacos配置中心

微服务&#xff08;6&#xff09; 文章目录 微服务&#xff08;6&#xff09;1. 统一配置管理1.1 在nacos中添加配置文件1.2 从微服务拉取配置 2. 配置热更新2.1 方式一2.2 方式二 3. 配置共享1&#xff09;添加一个环境共享配置2&#xff09;在user-service中读取共享配置3&am…

数字人可以为文化传播带来什么?

近日&#xff0c;由哈萨克斯坦驻华大使馆、中国外文局文化传播中心、中关村科幻产业创新中心联合发起的中哈青年友谊数字人怡漾和苏路&#xff08;Сұлу&#xff09;正式发布。其中&#xff0c;代表中方形象的数字人怡漾&#xff0c;不仅将成为中哈青年文化交流的标志与代言…

seq2seq:中英文翻译

文章目录 一、完整代码二、论文解读2.1 RNN模型2.2 Attention-based ModelsGlobal attentional modelLocal attentional model 2.3 Input-feeding Approach2.4 模型效果 三、过程实现3.1 导包3.2 数据准备3.3 构建相关类3.4 模型配置3.5 模型推理 四、整体总结 论文&#xff1a…

Facebook公共主页受限、被封?一文教你排雷解决

一、Facebook公共主页是什么&#xff1f; 现在人们的生活已经离不开各种社交媒体&#xff0c;只要有智能手机&#xff0c;或多或少会使用一些社交平台&#xff0c;而Facebook是一个拥有大量用户的社交平台。这对于各种企业而言&#xff0c;也是一个十分优秀的营销平台&#xf…

使用Docker安装部署Swagger Editor并远程访问编辑API文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 Swagger Editor本地接口文档公网远程访问 Swagger Editor是一个用于编写OpenAPI规范的开源编…