
使用jdbc操作数据库
导入驱动:使用 获取数据库连接:通过 执行SQL操作:创建 处理结果:若为查询操作,返回 资源释放:确保关闭
发布日期:2021-05-10 03:44:24
浏览次数:31
分类:精选文章
本文共 3171 字,大约阅读时间需要 10 分钟。
JDBC技术详解
JDBC概述
JDBC(Java DataBase Connectivity),即Java数据库连接技术,旨在实现Java程序对各种数据库的访问。它通过一组Java语言编写的接口和类,位于java.sql
和javax.sql
包中,采用面向接口编程的方式。
JDBC连接数据库
JDBC的优势
- 统一编程接口:无需为不同数据库编写专门代码,只需加载相应驱动即可。
- 灵活性:支持多种数据库如MySQL、Oracle、SQLServer等。
连接数据库步骤
Class.forName("com.mysql.jdbc.Driver")
加载驱动。DriverManager.getConnection(url, 用户名, 密码)
获取连接。Statement
或PreparedStatement
对象,执行SQL语句。ResultSet
结果集。ResultSet
、Statement
和Connection
以释放资源。Statement与PreparedStatement
- Statement:通过
createStatement()
创建,用于发送简单SQL语句。 - PreparedStatement:通过
prepareStatement()
创建,用于带有输入参数的SQL语句。 - 优势:
- 预编译:提升执行效率。
- 安全性:防止SQL注入。
- 性能优化:减少资源消耗。
避免SQL注入的示例
public class Test { public static void getStudentByName(String name) throws Exception { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://192.168.232.234:3306/test"; Connection conn = DriverManager.getConnection(url, "root", "ok"); String sql = "select * from student where stu_name=?"; PreparedStatement stat = conn.prepareStatement(sql); stat.setString(1, name); ResultSet rs = stat.executeQuery(); while (rs.next()) { System.out.println(rs.getString("stu_name")); } rs.close(); stat.close(); conn.close(); } public static void main(String[] args) throws Exception { getStudentByName("李白"); }}
JDBC资源管理
public class TestPrepare { private static Connection conn; private static PreparedStatement pst; private static ResultSet rs; private static final String URL = "jdbc:mysql://192.168.232.234:3306/test"; public static void getConn() { try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(URL, "root", "ok"); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } } public static void query(String sql, String... params) { try { pst = conn.prepareStatement(sql); for (int i = 0; i < params.length; i++) { pst.setObject(i + 1, params[i]); } rs = pst.executeQuery(); } catch (Exception e) { e.printStackTrace(); } } public static boolean update(String sql, String... params) { try { pst = conn.prepareStatement(sql); for (int i = 0; i < params.length; i++) { pst.setObject(i + 1, params[i]); } return pst.executeUpdate() > 0; } catch (Exception e) { e.printStackTrace(); } return false; } public void close() { try { if (rs != null) rs.close(); if (pst != null) pst.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } }}
使用示例
getConn();String s = "update subject set subjectNo=?, GradeId=? where subjectName=? ";update(s, "9", "2", "高等数学-2");String s1 = "select * from subject where GradeId=?";query(s1, "2");while (rs.next()) { System.out.println(rs.getString("subjectName"));}close();
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月18日 03时15分53秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
去了解拉绳位移编码器的影响因素
2019-03-12
无法初始化Winsock2.2处理
2019-03-12
vMotion 操作失败进度卡在14% ,报错: Operation Timed out
2019-03-12
重置UAG Application admin密码
2019-03-12
Horizon Daas租户管理平台扩展分配时报:内部错误
2019-03-12
项目计划甘特图绘制说明
2019-03-12
嵌入式系统试题库(CSU)
2019-03-12
【自考】之信息资源管理(一)
2019-03-12
setup facatory9.0打包详细教程(含静默安装和卸载)
2019-03-12
ionic4 路由跳转传值
2019-03-12
pwn题shellcode收集
2019-03-12
Linux kernel pwn --- CSAW2015 StringIPC
2019-03-12
配置jdk的环境变量
2019-03-12
编译android源代码(aosp)
2019-03-12
IDEA 找不到 Persistence窗口解决办法
2019-03-12
维基百科之AndroidRoot
2019-03-12
C++ Primer Plus读书笔记:循环读取(错误处理)
2019-03-12
skimage与cv2 安装失败的解决办法
2019-03-12
关于吴恩达的深度学习的一些授课视频里面英文翻译错误的实例展示
2019-03-12