JDBC--Java Database Connectivity
DriverManager:管理JDBC驱动。 Connection:连接数据库(通过DriverManager创建)。 Statement/PreparedStatement:执行SQL语句或预编译的SQL语句。 导入驱动:加载具体的驱动类。 建立连接:通过 发送SQL:使用Statement/PreparedStatement发送SQL命令。 处理结果集:处理查询结果。
发布日期:2021-04-30 21:01:09
浏览次数:103
分类:精选文章
本文共 1925 字,大约阅读时间需要 6 分钟。
JDBC(Java DataBase Connectivity)是Java语言访问各种关系型数据库管理系统(DBMS)提供的统一访问接口。通过JDBC,Java程序可以对多种数据库进行操作。
JDBC API的主要功能
JDBC API主要通过以下类/接口实现三件事:
Connection的作用
- 通过Connection产生Statement、PreparedStatement和CallableStatement:
createStatement()创建Statement对象。prepareStatement(String sql)创建PreparedStatement对象,用于预编译SQL语句。prepareCall()创建CallableStatement对象,用于调用数据库存储过程或存储函数。
Statement的操作
- 增删改:通过
executeUpdate(String sql)方法执行。 - 查询:通过
executeQuery(String sql)方法查询数据。
ResultSet的操作
- 结果集处理:
- 使用
ResultSet对象保存查询结果。 next()方法:光标下移,判断是否还有下一条数据。previous()方法:光标上移,判断是否有上一条数据。getXxx(字段名/位置)方法:获取指定字段的值。
- 使用
PreparedStatement的优势
- 与Statement的区别:
- Statement:
- 直接传入SQL语句。
- 通过
executeUpdate(String sql)执行。
- PreparedStatement:
- 在创建时传入SQL语句(可能包含占位符)。
- 通过
prepareStatement(String sql)预编译SQL语句。 - 执行时使用
setXxx()方法替换占位符。
使用PreparedStatement的优势
编码简便:
- 使用占位符代替字符串拼接,减少SQL注入风险。
- 示例:
String sql = "INSERT INTO student(stuno, stuname) VALUES (?, ?)";PreparedStatement pstmt = connection.prepareStatement(sql);pstmt.setString(1, name);pstmt.setInt(2, age);pstmt.executeUpdate();
性能提升:
- 预编译只需执行一次,减少重复执行开销。
- 适用于大量数据操作。
安全性增强:
- 防止SQL注入攻击。
- 示例:
// SQL注入风险String uname = request.getParameter("username");String sql = "SELECT count(*) FROM login WHERE uname=' " + uname + "' OR 1=1 --'";
JDBC访问数据库的步骤
DriverManager.getConnection() 获取连接。数据库驱动
- 驱动 jar:包含特定数据库的驱动类和连接字符串。
- 常见数据库驱动:
- Oracle:
- 驱动文件:ojdbc-x.jar
- 驱动类:oracle.jdbc.OracleDriver
- 连接字符串:
jdbc:oracle:thin:@localhost:1521:ORCL
- MySQL:
- 驱动文件:mysql-connector-java-x.jar
- 驱动类:com.mysql.jdbc.Driver
- 连接字符串:
jdbc:mysql://localhost:3306/数据库实例名
- SqlServer:
- 驱动文件:sqljdbc-x.jar
- 驱动类:com.microsoft.sqlserver.jdbc.SQLServerDriver
- 连接字符串:
jdbc:microsoft:sqlserver:localhost:1433;databasename=数据库实例名
- Oracle:
JDBC的优势
- 灵活性:支持多种数据库。
- 易用性:提供统一的数据库访问接口。
- 性能优化:通过预编译和优化减少开销。
- 安全性:防止SQL注入和XSS攻击。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2026年06月11日 10时17分50秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
pilicat-dfs 霹雳猫-分布式文件系统
2023-03-02
Pillow lacks the JPEG 2000 plugin
2023-03-02
SpringBoot之ElasticsearchRestTemplate常用示例
2023-03-02
ping 全网段CMD命令
2023-03-02
ping 命令的七种用法,看完瞬间成大神
2023-03-02
Pinia入门(快速上手)
2023-03-02
Pinia:$patch的使用场景
2023-03-02
Pinia:$subscribe()的使用场景
2023-03-02
Pinpoint对Kubernetes关键业务模块进行全链路监控
2023-03-02
Pinterest 大规模缓存集群的架构剖析
2023-03-02
PinYin4j库的使用
2023-03-02
PIP
2023-03-02
pip install mysqlclient报错
2023-03-02
pip install 出现报asciii码错误的解决
2023-03-02
pip throws TypeError: parse() got an unexpected keyword argument ‘transport_encoding‘ 在尝试安装新软件包时
2023-03-02
pip 下载慢
2023-03-02
pip 安装opencv-python卡死
2023-03-02