连接JDBC
1)JDBC简介
- JDBC就是Java中连接数据库方式
- 我们可以通过JDBC来执行SQL语句。
2)获取数据库连接
- java.sql.Connection 数据库连接
- 我们队数据库的一切操作都是从获取Connection开始
- 获取数据库连接的四个参数:
1.数据库的地址 url
语法:jdbc:子协议:厂商内容
MySQl的格式:jdbc:mysql://主机名:端口号/数据库名字
例子:jdbc:mysql://localhost:3306/test
2.用户名 user 连接数据库使用的用户名
3.密码 password 数据库的密码
4.数据库驱动全类名 driverClass
- 基本步骤:
1.导入数据库驱动的jar包
mysql-connector-java-5.1.37-bin.jar
2.准备四个参数
- url
- user
- password
- driverClass
3.加载数据库驱动
Class.forName(driverClass)
4.通过DriverManager来获取数据库连接
static Connection getConnection(String url, String user, String password)
- 核心类:
- java.sql.DriverManager
- 数据库驱动的管理器,负责加载数据库的驱动获取数据库连接
- static Connection getConnection(String url, String user, String password)
- getConnection方法用来通过url地址,用户名,密码等参数来获取数据库连接的
- java.sql.Connection
- 数据库连接
- Statement createStatement()
- 创建一个Statement对象,通过Statement对象来执行SQL语句
- java.sql.Statement
- SQL语句的执行器
- boolean execute(String sql)
- 执行一条SQL语句,并返回一个布尔值,执行成功返回true,执行失败返回false。用的不多
- ResultSet executeQuery(String sql)
- 执行查询的SQL语句,并返回一个结果集
- int executeUpdate(String sql)
- 执行修改数据的SQL语句(增删改),并返回受影响的行数
- java.sql.ResultSet
- 查询到的数据的结果集,我们通过JDBC查询数据库获得的数据,都封装在ResultSet中
- boolean next()
- 控制光标向下移动一行,如果光标当前位置是afterLast则返回false,告诉你没数据了,就别读了。
如果光标移动以后,没有在afterLast则返回true,可以读取数据。
- 在ResultSet有很多getXxx(int),比如getString(),getInt(),getByte()。
通过这些方法可以读取当前行的数据,它们需要一个int值作为参数,
int指的是读取数据的列数。
列数是从1开始的。
- 在ResultSet中还有很多getXxx(String),它和上边的方法的作用一致,
只不过它们需要的都是String类型的参数,参数代表的是当前的列名,
比如:我们要获取id的值
getInt("id")
要获取name的值
getString("name")
注意:如果查询的SQL使用了别名,则列名以别名为准。
3)数据的增删改
//创建一个SQL执行器
Statement stat = conn.createStatement();
//创建一个SQL语句
String sql = "INSERT INTO t_stu(`name` , age) VALUES('沙僧',28)";
//执行SQL语句
//executeUpdate用来执行一条修改SQL的语句
//它需要一个String类型sql作为参数,并会返回一个int型的值,该值表示SQL语句执行以后影响到的行数
int count = stat.executeUpdate(sql);
4)数据的查询
//创建Statement对象
Statement stmt = conn.createStatement();
//创建一个SQL语句
String sql = "SELECT id, name sname, age FROM t_stu WHERE id=2";
//执行查询
ResultSet rs = stmt.executeQuery(sql);
//控制光标下移一行
//如果当前行有数据,则读取
if(rs.next()){
//获取id,name,age
int id = rs.getInt("id");
String name = rs.getString("sname");
int age = rs.getInt("age");
System.out.println(id+"--"+name+"--"+age);
}
> 查询操作和修改的主要不同的是,查询使用executeQuery(),
它会返回ResultSet结果集,我们需要对结果集进行读取。
> 当我们只需要读取一个数据时,用if。
当需要读取全部数据时,用while
> 代码的规范:
- Connection、Statement、ResultSet,这些资源都是需要和数据建立连接的
这些资源我们并不是总需要使用,当我们不适用这些资源,需要将这些资源关闭。
- 关闭资源顺序:
从后往前关:
先关 ResultSet
在关 Statement
最后关 Connection
- 示例代码:
//定义三个变量
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
}catch(Exception e){
e.printStackTrace();
}finally{
if(rs!=null){
//关闭ResulSet
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
DAO(Data Access Object) 数据访问对象:
在Java中使用DAO类,来去和数据库交互,而其他类不再需要编写JDBC相关的代码,
而是直接调用DAO。
在实际上开发中,我们所有的JDBC相关的代码都应该写在DAO中,
java.sql这个包下的内容不应该出现在DAO以外的地方
t_user
CREATE TABLE t_user(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(100),
`password` VARCHAR(100),
email VARCHAR(100),
nickname VARCHAR(50)
)
创建UserDao(负责User对象和数据库相关的操作)
User getUserByUsername(String username) --> 根据用户查找用户
int saveUser(User user); --> 将用户对象插入进数据库
User getUserByUsernameAndPassword(String username , String password) --> 根据用户名和密码查找用户
登录:
登录实际上就是这么一条SQL语句:
SELECT * FROM t_user WHERE username='' AND password=''
- JDBC 数据库连接 Java操作数据库 jdbc快速入门
JDBC基本概念 Java DataBase Connectivity 数据库连接 java操作数据库 本质上(sun公司的程序员)定义的一套操作关系型数据库的规则 既接口 更新内容之前 代码 pa ...
- Java jdbc数据库连接池总结!(转)
1. 引言 近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机 应用程序已从传统的桌面应用转到Web应用.基于B/S(Browser/Server)架构的 ...
- JDBC(Java Data Base Connectivity,java数据库连接)
JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言 ...
- 【学习笔记】JDBC数据库连接技术(Java Database Connectivity)
一.JDBC简介 Java是通过JDBC技术实现对各种数据库的访问的,JDBC是Java数据库连接技术的简称.它可以把数据持久保存,是一种持久化机制. 1.持久化 持久化就是将程序中的数据在瞬时状态和 ...
- Java自学-JDBC 数据库连接池
数据库连接池 与线程池类似的,数据库也有一个数据库连接池. 不过他们的实现思路是不一样的. 本章节讲解了自定义数据库连接池类:ConnectionPool,虽然不是很完善和健壮,但是足以帮助大家理解C ...
- JDBC:(java database Connection) java数据库连接。
JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC连接步骤: 1.先导入jar包,把jar放入到工程下并 ...
- JAVA之JDBC数据库连接池总结篇
JDBC数据库连接池 一.JDBC数据库连接池的必要性 二.数据库连接池技术 三.多种开源的数据库连接池 3.1 C3P0数据库连接池 3.2 DBCP数据库连接池 3.3 Druid(德鲁伊)数据库 ...
- JAVA基础知识之JDBC——JDBC数据库连接池
JDBC数据库连接池 数据库的连接和关闭是很耗费资源的操作,前面介绍的DriverManager方式获取的数据库连接,一个Connection对象就对应了一个物理数据库连接,每次操作都要打开一个连接, ...
- JDBC数据库连接池原理
JDBC是java数据库连接的简称.它是一种用于实行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成.其相关的API都在java.sql.*包下 ...
随机推荐
- 使用three.js实现机器人手臂的运动效果
Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机.光影.材质等各种对象.你可以在它的主页上看到许多精彩的演示.不过,这款引擎目前还处在比较不成熟的开发阶段 ...
- html之结构化标记
1.什么是结构化标记 对布局使用的div 进行升级 , 根据页面的不同区域而提供的不同标签.作用与div几乎一致 专门用于搭建网站结构而用 2.结构标记详解 1.<header>元素 作用 ...
- 部署服务能在Dynamics CRM Online上使用吗?
部署服务有些时候有用,改动一些参数不需要重启IIS,也不需要去数据库中更改.比如,系统默认设置一个仪表盘(Dashboard)最多6个组件,不能超过这个数量,通过部署服务是可以更改的.部署服务既可以通 ...
- 关于移动APP与Web APP的测试重点以及区别
Web app测试重点: 1. 功能测试:功能的实现是否满足需求. 2. 性能测试: 2.1 链接速度测试:测试页面链接的速度 2.2 负载测试:web应用系统能允许多少个用户同时在线?超过这个数量会 ...
- java 一款可以与ssm框架完美整合的web报表控件
硕正套件运行于客户端(浏览器),与应用服务器(Application Server)技术无关,所以能完全用于J2EE. ASP.Net.php等技术开发的Web应用产品中. 硕正套件部署于服务器,支持 ...
- java第二课,java基础2
关键字: 在java中被赋予了特殊含义的单词,具有特殊用途. 标识符: 由字母,数字,下划线(_),美元符($)组成,不能以数字开头,不能是jav ...
- php 批量进行复制文件
php 批量进行复制文件 1.前言 目标:php批量进行复制指定的目录文件夹下所有文件复制到另一个文件夹下 所使用的的php函数:is_dir,opendir,readdir,scandir,mkdi ...
- Hadoop笔记——技术点汇总
目录 · 概况 · Hadoop · 云计算 · 大数据 · 数据挖掘 · 手工搭建集群 · 引言 · 配置机器名 · 调整时间 · 创建用户 · 安装JDK · 配置文件 · 启动与测试 · Clo ...
- NLP —— 图模型(三)pLSA(Probabilistic latent semantic analysis,概率隐性语义分析)模型
LSA(Latent semantic analysis,隐性语义分析).pLSA(Probabilistic latent semantic analysis,概率隐性语义分析)和 LDA(Late ...
- phpstudy:80端口被占用解决方案总结
一开始因为要安装新的软件,同时也由于一直电脑很卡,所以直接重装系统,从WIN8变成WIN10,然后不知道为什么,phpstudy里面80端口被占用了!被占用了!现在找到了两种方法解决! 第一种 该端口 ...