B028-JDBC基础

news/2024/5/19 1:38:07 标签: jdbc

目录

      • 什么是JDBC
        • JDBC引入
        • 持久化
        • JDBC规范
      • 使用JDBC完成CRUD
        • JDBC创建表
        • JDBC CRUD和优化
      • DAO层的实现

什么是JDBC

JDBC引入

在这里插入图片描述
Java代码操作数据库的唯一技术:-- JDBC ( java database connection )

持久化

持久化(persistence):把数据保存到可掉电式存储设备(断电之后,数据还在,比如硬盘,U盘)中以供之后使用。
大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,
而持久化的实现过程大多通过各种关系数据库来完成。 mysql oracle

JDBC规范

JDBC(Java DataBase Connectivity(Java数据库的连接)):
是一种用于执行SQL语句(DML,DDL,DQL)的Java API,可以为多种关系数据库(oracle,mysql,SQL server)提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序

JDBC规范的实现由数据库厂商完成,就是相应的jar包
在这里插入图片描述

使用JDBC完成CRUD

JDBC创建表

导包(可去数据库官网下载或者搜索引擎搜索下载),build path

/**
 *navicat
 * 1 输入账号密码产生连接
 * 2.输入sql语句
 * 3.执行sql语句
 *   
 *java代码连接数据库JDBC
 * 1.导入相应的jar包
 * 2.写代码
 *  贾  加载驱动  Driver
 *  琏  连接数据库
 *  欲  预编译sql
 *  执  执行sql语句
 *  释  释放连接
 */
public class JBDCTest {
  
//	ctrl+1:提示
	@Test
	public void testName() throws Exception {
		//加载驱动
		 Class.forName("com.mysql.jdbc.Driver");
		//连接数据库
		 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "root");
		//预编译sql
		 Statement State= conn.createStatement();
		 //执行sql语句
		 String sql1="CREATE TABLE `student` "
		 		+ "(`id` int(11) NOT NULL AUTO_INCREMENT,"
		 		+ "`name` varchar(255) DEFAULT NULL,"
		 		+ "`password` varchar(255) DEFAULT NULL ,"
		 		+ "PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=254167"
		 		+ " DEFAULT CHARSET=utf8;";
		 String sql2="insert into Student(id,name,password) values(1,'小弟弟Ÿ','123456')";
		 String sql3="delete from Student where id=1";
		 String sql4="update Student set name='王大川', password='1234' where id=2";
		 State.execute(sql4);  
		 //释放连接 先开后关
		 State.close();
		 conn.close();
	}
}
JDBC CRUD和优化
public class JBDCTest {
    Connection conn=null;
	Statement State =null;
	ResultSet rs=null;
		
	@Before  //指定的test前执行
	public void before() throws Exception {
		 Class.forName("com.mysql.jdbc.Driver");	
		 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "root");
	}
	
	@After  //指定的test后执行
	public void after() throws Exception {
		if(rs!=null){
		   rs.close();
		}
		if(State!=null){
		   State.close();
		}
       if(conn!=null){
    	  conn.close();
       }
	}
	
	@Test
	public void insert() throws Exception {
		 Statement State = conn.createStatement();
		 String sql="insert into Student(id,name,password) values(3,'小弟弟Ÿ','123456')";
		 State.execute(sql);
	}
	@Test
	public void update() throws Exception {
		Statement State = conn.createStatement();
		//执行sal
		State.execute("update Student set name='王大川', password='12345' where id=3");
	}
	@Test
	public void delete() throws Exception {
		//预编译sql
		Statement State = conn.createStatement();
		//执行sal
		State.execute("delete from Student where id=3");
	}
	
	// 查询 的第一种方式
	@Test
	public void query() throws Exception {
		Statement State = conn.createStatement();
		ResultSet rs = State.executeQuery("select * from Student where id=2");
	    while (rs.next()) {
			System.out.println(rs.getInt(1));
			System.out.println(rs.getString(2));
			System.out.println(rs.getString(3));
		}
	}   
	// 查询 的第二种方式    --推荐使用
	@Test
	public void query2() throws Exception {
		Statement State = conn.createStatement();
		ResultSet rs = State.executeQuery("select * from Student where id=2");
	    while (rs.next()) {
			System.out.println(rs.getInt("id"));
			System.out.println(rs.getString("name"));
			System.out.println(rs.getString("password"));
		}
	}
}

DAO层的实现

DAO层介绍

门店 门店的接待员—> 售货员 --> 仓库管理员 (仓库)
Java 界面层 服务层 数据层
Controller service dao

Dao 具体怎么写
1 它是操作数据库的 ,所有里面写的代码全是和数据库操作有关系的东西.
2 和数据库操作我们一般就是 CRUD
3 我们要怎么写
A 新建一个DAO包 这个包下面就是放的DAO 相关的文件
B 建一个接口 这个接口要与它操作的数据库表对应( CRUD)
C 对DAO的接口进行实现 (实现他的CRUD) 放到 dao包下面的impl包里
我定义接口其实就是定义规范 定义我CRUD的规范
而实现就是写真正的CRUD的代码,这个代码主要写我要连接什么数据库?怎么链接?
------ mysql
------ DB2
------ XXX

Domain 收集数据库返回的数据

其他见工程


http://www.niftyadmin.cn/n/5259337.html

相关文章

生产环境质量保障的四大问题

一、场景复杂 这点不难理解,为了保障生产环境的系统质量,开展测试右移的实践,首先要解决的就是场景问题。生产环境的场景复杂性,主要有如下三点: 用户场景复杂:典型的特征是多端用户(网页/客户端/移动端/小…

数据云:数据基础设施的一小步,数字经济的一大步

随着数字经济的崛起,数据正成为推动社会发展和经济增长的核心要素。在这个数字化时代,数据已经被誉为新的生产要素,是数字经济发展的基础性资源和战略性资源。为了更好地支持数据的汇聚、流通和应用,数据基础设施迎来了一次重要的…

IvorySQL新增命令及有关配置参数介绍

在之前的一篇文章中,我们简要介绍了「IvorySQL的IVY_GUC框架介绍与使用指南」,除了数据类型和内置函数的兼容性外,IvorySQL还新增了一些GUC参数,以便更好地对数据库变量进行设置和对数据库进行控制。 接下来,本文将详细…

PCL显示double类型的点云方案

前言 我们知道,PCL和OpenGL等三维可视化软件一样,为了兼顾性能需求,只支持加载Float类型的点云数据,但是当我们对精度要求太高时,Float类型支持不了我们的精度要求,我们的数据必须用Double类型存储才可以&…

解决IDEA Failed to connect to github.com port 443: Timed out 问题

1. Timed out 报错 fatal: unable to access https://github.com/xxxx/xxxx.git/: Failed to connect to github.com port 443: Timed out解决 设置代理 git config --global http.proxy 127.0.0.1:1080 #为全局的 git 项目都设置代理git config --local http.proxy 127.…

Java_mybatis-结果集映射-ResultTypeResultMap

Mybatis返回值接收 可以使用两种方式进行参数的接收 resultTyperesultMap 这两种分别都是需要在Mapper.xml文件中去设置的 当结果是一个简单的对象或者list或者map,对象中没有嵌套对象,或者集合时,就可以直接使用resultType 反之如果需要…

JAVA 导出报表 大数据量 sxssfworkbook的使用

sxssfworkbook 之前报表导出使用得是XSSFWorkbook 但是导出数据量过大的时候经常出现OOM,现在发现使用sxssfworkbook 减少内存压力 官网是这样介绍的: SXSSF (package: org.apache.poi.xssf.streaming) is an API-compatible streaming extension of X…

总结一些vue3小知识2

1.el-tree-select和el-tree组件报错(有的下拉选项选择不了,一点击就报错,但是有的却能选择,不会报错) 原因:就如同v-for一样,需要添加key才不会出现渲染错误,而el-tree-select和el-tree组件需要…