JDBC的操作步骤
JDBC的操作步骤
一、什么是JDBC
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。 其实,JDBC就是一套规范(接口),让各大服务器厂商自己去实现这个规范(实现接口),从而可以使得java编写的程序可以去访问。JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

二、常用的API
Statement接口:
执行静态SQL语句并返回它所生成结果.
int executeUpdate(String sql): 执行DDL/DML语句. 若当前SQL是DDL语句,则返回0. 若当前SQL是DML语句,则返回受影响的行数.
ResultSet executeQuery(String sql):执行DQL语句,返回结果集.
close():释放资源
Connection接口
Statement createStatement():创建一个静态的语句对象.
PreparedStatement prepareStatement(String sql):创建一个预编译语句对象. 此时参数sql:表示带有占位符(?)的SQL语句的模板.
close():释放资源
PreparedStatement接口
是Statemen接口的子接口,表示预编译的 SQL 语句的对象.
void setXxx(int parameterIndex,Xxx value):设置第几个占位符的真正参数值.
int executeUpdate():执行DDL/DML语句. 注意:没有参数 若当前SQL是DDL语句,则返回0. 若当前SQL是DML语句,则返回受影响的行数.
ResultSet executeQuery():执行DQL语句,返回结果集.
close():释放资源
ResultSet接口
执行SQL语句会返回一个结果集,开始光标位于第一行的前,调用next方法会返回一个boolean类型,判断下一行是否还有结果集并且光标会想下一行移动。
boolean next():判断当前光标是否能向下移动,如果能向下移动返回true,并同时将光标移动到下一行.
Xxx getXxx(int columnIndex):取出当前光标所在行的第columnIndex列的数据(columnIndex从1开始算).
Xxx getXxx(String columnName):取出当前光标所在行的列名为columnName列的数据,columnName可以是别名.
close():释放资源
Xxx表示的是数据类型
三、怎么用JDBC
有五个铁定的步骤,一个一个来说:
1.加载注册驱动
先加载驱动包,驱动包就是服务器厂商实现了JDBC接口的一个jar包,比如mysql的驱动包。先build path ,mysql的jar包。用java加载注册驱动代码:
Class.forName("驱动类名称");
一些数据库的驱动类名称:
mysql: com.mysql.jdbc.Driver
oracle: oracle.jdbc.driver.OracleDriver
DB2: com.ibm.db2.jcc.DB2Driver
加载过程就是 把驱动类这一份字节码加载进JVM,会立刻执行类中的静态代码块,而在这些类中的静态代码块就是在注册驱动。
Java6开始,JDBC4.0有一个新特性,无需加载注册驱动。不提倡,因为JavaWeb也是要手动加载
2.获取连接对象
Connection conn = DriverManager.getConnection(url,username,password);
url是也是各个数据库不相同:
mysql的是 jdbc:mysql://主机名:3306/数据库
username和password是数据库的账号和密码
3.获取语句对象
Statement st = conn.createStatement();
PreparedStatement ps = conn.prepareStatement(sql);
4.执行SQL语句
在数据库管理系统上执行完sql语句返回结果,DML语句会返回影响的行数,DDL语句不返回,DQL会返回一个结果集
st.executeUpdate(sql);//DML,DDL
ResultSet rs = execumentQuery();//DQL
对于DQL语句要进行处理结果集
while(rs.next){//TODO}
5.释放资源
正确关闭资源:
public static void close(Connection conn, Statement st, ResultSet rs){
try {
if(rs != null){
rs.close();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(st != null){
st.close();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(conn != null){
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
}
}
}
}
四、JDBC的DML,DDL,DQL操作
创建表
public void testCreateTab() throws Exception {
String sql = "CREATE TABLE s_student(id BIGINT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(10) NOT NULL UNIQUE,age INT)";
//1.记载注册驱动/
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo",
"root", "admin");
//3.创建语句对象
Statement st = conn.createStatement();
//4.执行SQL语句
st.executeUpdate(sql);
//5.释放资源
st.close();
conn.close();
}
增删改
public class DMLTest {
@Test //向表中添加行数据
public void testInsert() throws Exception {
String sql = "INSERT INTO s_student(name,age) VALUES('西门吹雪',18),('王熙凤',19)";
//1.加载注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "admin");
//3.获取语句对象
Statement st = conn.createStatement();
//4.执行sql语句
int ret = st.executeUpdate(sql);
System.out.println("受影响的行数"+ret);
//5.关闭资源
st.close();
conn.close();
}
@Test
public void testDelete() throws Exception {
String sql = "DELETE FROM s_student WHERE name = '西门吹雪'";
//1.记载注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2获取连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "admin");
//3获取语句对象
Statement st = conn.createStatement();
//4.执行sql语句
st.executeUpdate(sql);
//5.释放资源
st.close();
conn.close();
}
@Test
public void testUpdate() throws Exception {
String sql = "UPDATE s_student SET age = 99 WHERE id = 3";
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "admin");
Statement st = conn.createStatement();
st.executeUpdate(sql);
st.close();
conn.close();
}
}
查询
public class DQLTest {
@Test
public void testQuerySigle() throws Exception {
String sql = "SELECT * FROM s_student WHERE id = 1";
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//获取连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "admin");
//获取语句对象
Statement st = conn.createStatement();
//执行sql语句
ResultSet rs = st.executeQuery(sql);
if(rs.next()){
long id = rs.getLong("id");
long age = rs.getLong("age");
String name = rs.getString("name");
System.out.println(id + "," + age +"," + name);
}
rs.close();
st.close();
conn.close();
} @Test
public void testAll() throws Exception {
String sql = "SELECT * FROM s_student";
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","admin");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
while(rs.next()){
String name = rs.getString("name");
long id = rs.getLong("id");
long age = rs.getLong("age");
System.out.println(name + "," + id +"," + age);
}
rs.close();
st.close();
conn.close();
}
}
五、总结
JDBC的CUID操作就是严格按照上述步骤完成的,可以发现基本操作都很相同,也很容易理解。
JDBC的操作步骤的更多相关文章
- JDBC的操作步骤和实例()
加载JDBC驱动程序 提供JDBC连接的URL 创建数据库的连接 创建一个Statement 执行SQL语句 处理结果 关闭JDBC对象 实例JdbcUtils 创建一个JDBC程序包含7个步骤: 1 ...
- JDBC:数据库操作:事务
事务特征:原子性,一致性,独立性,持久性. 要想操作事务,必须按照以下步骤完成. 1,取消掉自动提交(SET AUTOCOMMIT=0):每次执行数据库更新的时候实际上发出SQL命令之后就已经提交上去 ...
- java中JDBC连接数据库操作的基本步骤
JDBC基本步骤 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lan ...
- 学习笔记-JDBC连接数据库操作的步骤
前言 这里我就以JDBC连接数据库操作查询的步骤作以演示,有不到之处敬请批评指正! 一.jdbc连接简要步骤 1.加载驱动器. 2.创建connection对象. 3.创建Statement对象. 4 ...
- JDBC连接数据库操作
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...
- JDBC的基本步骤
JDBC全名是Java Data Base Connectivity就是Java数据库连接,这是Java用于向数据库执行SQL语句的API,JDBC可以为多种关系型数据库提供统一的访问,而不用考虑细节 ...
- JAVA采用JDBC连接操作数据库详解
JDBC连接数据库概述 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供 ...
- jdbc 链接数据库步骤 7步
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), ...
- 使用JDBC连接操作数据库
JDBC简介 Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成. JDBC ...
随机推荐
- 2018 Multi-University Training Contest 3 Solution
A - Problem A. Ascending Rating 题意:给出n个数,给出区间长度m.对于每个区间,初始值的max为0,cnt为0.遇到一个a[i] > ans, 更新ans并且cn ...
- 线程、进程、daemon、GIL锁、线程锁、递归锁、信号量、计时器、事件、队列、多进程
# 本文代码基于Python3 什么是进程? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行 ...
- Java final finally finalize有什么不同
① final 可以用来修饰类.方法.变量, ----final修饰的class代表不可以继承扩展 ----final的变量不可以修改 ----final的方法不可以override ----fina ...
- python webdriver 测试框架-数据驱动txt文件驱动,带报告的例子
数据驱动txt文件驱动的方式,带报告 data.txt: gloryroad test||光荣之路 摔跤爸爸||阿米尔 超人||电影 data_driven_by_txt_file.py: #enco ...
- 图像处理(二十一)基于数据驱动的人脸卡通动画生成-Siggraph Asia 2014
http://blog.csdn.net/garfielder007/article/details/50582018 在现实生活中,我们经常会去评价一个人,长得是否漂亮.是不是帅哥美女,然而如何用五 ...
- SQL学习笔记四(补充-1-1)之MySQL单表查询补充部分:SQL逻辑查询语句执行顺序
阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SELECT语句关键字的定义顺序 SELE ...
- 中通快递单api查询
request POST https://hdgateway.zto.com/WayBill_GetDetail HTTP/1.1Host: hdgateway.zto.comConnection: ...
- 可替换参数在SharePoint和VS中的使用
什么是可替换参数呢?你可能会在代码里看到像$SharePoint.Project.AssemblyFullName$一样的标记.VS会在编译的时候用完整的签名来替换相应参数.例如,标记 $ShareP ...
- GET 和 POST 方法的区别
GET 和 POST 是 HTTP 请求的两种基本方法,最直观的区别就是 GET 把参数包含在 URL 中,POST 通过 request body 传递参数. 一些标准的区别: 1. GET 在浏览 ...
- 使用向量化的 if:ifelse
进行分支计算的一个替代方法是 ifelse( ).这个函数接收一个逻辑向量作为判定条件,并且返回一个向量.对于逻辑判定条件内的每一个元素,若是 TRUE,则选择第 2个参数 yes 中所对应的元素:若 ...