java数据库连接

简介: JDBC详解

1. 什么是JDBC?#

JDBC全称:Java Database Connectivity,简称JDBC

2. JDBC常用的开发接口(☆)#

接口 描述
Connection 用来与数据库建立连接
Statement 用来发送SQL语句
ResultSet 执行SQL语句返回的结果集
PreparedStatement 用来发送SQL语句的,是Statement的子接口(预编译、防止SQL注入)

3. 创建JDBC的步骤(☆)#

  1. 导入数据库驱动包,加载驱动
OracleDriver od = new OracleDriver();
DriverManager.registerDriver(od);
// 参数:驱动类的完整路径
Class.forName("oracle.jdbc.driver.OracleDriver");
  1. 建立连接
Connection conn = DriverManager.getConnection(连接URL, 用户名, 密码);
("jdbc:oracle:thin:@127.0.0.1:1521:orcl,用户名, 密码")
  1. 创建可执行SQL语句的statement对象,发送SQL语句
Statement sm = conn.createStatement();
PreparedStatement ps = conn.prepareStatement(sql)
  1. 获取结果集,遍历数据
ResultSet rs = sm.executeQuery("select * from t_depart");
// 执行的SQL语句为查询语句,返回的结果是ResultSet类型
statement.executeQuery(sql);
// 执行的SQL语句为删除、修改、添加,返回的结果是int类型,代表数据库中有多少条记录被改变
statement.executeUpdate(sql);
// 执行的SQL语句为查询、删除、修改、添加,返回的结果是boolean类型,若为true,代表执行的为查询语句,否则为其他语句
statement.execute(sql);
  1. 关闭,先开的后关,后开的先关
rs.close();
sm.close();
conn.close();

4. 时间处理#

Java中有三个时间,java.util.Date时间基类,有三个子类:

时间 描述
java.sql.Date 数据库时间,精确到年月日
java.sql.Timestamp 数据库时间,精确到年月日时分秒
java.sql.Time 数据库时间,精确时分秒

5. JDBC编程思想(类与数据库对应关系)(☆)#

  • 一个类对应一张表
  • 一个属性对应一个字段
  • 一个对象对应一条记录

6. Statement与PreparedStatement区别(☆)#

PrepareStatement是Statement的子接口

  • PerparedStatement自带预编译功能,相同的SQL语句只会编译一次,提高执行效率
    Statement每次执行SQL语句都会重新编译,执行效率不高
  • PerparedStatement防止SQL注入,安全性比较高
    Statement不能防止SQL注入,安全性较低

7. 数据类型与Java类型的匹配#

数据库类型 Java类型
char String
varchar
varchar2
clob
number int
long
number(7,2) double
date java.sql.Date
timestamp java.sql.Timestamp

8. JDBC如何手动提交事务#

JDBC默认自动提交事务

  1. 把Connection对象设置成手动提交事务,代码如下:
    conn.setAutoCommit(false);
  2. 当Statement对象执行SQL语句之后,提交事务,代码如下:
int row = ps.executeUpdate();
conn.commit();
select t.*, rowid from t_newsuser t;
// 格式化表
truncate table t_newsuser;

9. 如何释放一张表的空间,提高查询效率#

select * from t_newstype;
select * from t_newstype1;
  1. 创建一张备份表
    create table t_newstype1 as select * from t_newstype;
  2. 清空原表
    truncate table t_newstype;
  3. 还原数据
insert into t_newstype select * from t_newstype1;
commit;
  1. 删除备份表
    drop table t_newtype1;

10. executeUpdate与executeQuery的区别#

  • executeUpdate:执行的语句是DDL、DML,DDL几乎不用,返回值为:影响行数(int)
  • drop:删除表结构,并且删除数据,释放表空间
  • truncate:保留表结构,清除数据,释放表空间
  • delete:保留表结构,删除指定数据,提交事务,不一定释放空间
  • executeQuery:执行的语句是DQL,select查询语句,返回值为:结果集(ResultSet)

10. JDBC常见异常#

常见异常 可能引起原因
标识符无效 字段名单词写错
索引中丢失IN或OUT 字段名与?个数不匹配
无效的列索引 参数多余?
ORA-00911:无效字符 多个无效的字符,例如:分号
列在此处不允许 数据类型不匹配
目录
相关文章
|
2月前
|
关系型数据库 MySQL Java
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
85 0
|
26天前
|
XML Java 数据库连接
性能提升秘籍:如何高效使用Java连接池管理数据库连接
在Java应用中,数据库连接管理至关重要。随着访问量增加,频繁创建和关闭连接会影响性能。为此,Java连接池技术应运而生,如HikariCP。本文通过代码示例介绍如何引入HikariCP依赖、配置连接池参数及使用连接池高效管理数据库连接,提升系统性能。
55 5
|
20天前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
34 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
48 3
|
1月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
58 2
|
1月前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
50 2
|
1月前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
30 4
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
31 1
|
1月前
|
Java 数据库连接 数据库
Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销
本文深入探讨了Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销,显著提升了系统的响应速度和吞吐量。文章介绍了连接池的工作原理,并以HikariCP为例,展示了如何在Java应用中使用连接池。通过合理配置和优化,连接池技术能够有效提升应用性能。
47 1
|
1月前
|
监控 Java 数据库连接
在Java开发中,数据库连接管理是关键问题之一
在Java开发中,数据库连接管理是关键问题之一。本文介绍了连接池技术如何通过预创建和管理数据库连接,提高数据库操作的性能和稳定性,减少资源消耗,并简化连接管理。通过示例代码展示了HikariCP连接池的实际应用。
21 1