
关于jdbc的各种使用分享
发布日期:2021-05-20 08:01:14
浏览次数:17
分类:精选文章
本文共 7952 字,大约阅读时间需要 26 分钟。
关于JDBC的各种使用分享
JDBC(Java Database Connection)是Java编程中常用的数据库连接技术,能够支持各种关系型数据库。以下将分享 JDBC 的一些实际使用方法和技巧。
一、JDBC 的简单使用
为了使数据库能够被もり JDBC 驱动程序识别,我们首先需要加载正确的 JDBC 驱动程序。以下是一个简单的示例代码片段:
package com.example.jdbc;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class TestJdbc { public static void main(String[] args) throws SQLException { // JDBC 驱动程序的名字 String driver = "com.oracle.jdbc.Driver"; // 数据库连接 URL String url = "jdbc:oracle:thin:@//132.77.74.87/lyxt"; // 数据库用户名和密码 String username = "admin"; String password = "admin"; // 创建 Statement 对象 Statement stmt = null; try { Class.forName(driver); // 获取数据库连接 java.sql.Connection con = DriverManager.getConnection(url, username, password); stmt = con.createStatement(); // 执行 SQL 查询 String sql = "SELECT * FROM RESOURCE_OA"; ResultSet res = stmt.executeQuery(sql); // 获取结果集的元数据 ResultSetMetaData rsmd = res.getMetaData(); // 获取结果的数量 int count = rsmd.getColumnCount(); // 读取结果并打印 StringBuffer sb = new StringBuffer(); while (res.next()) { sb.append controls, 但这样会导致运行时错误。请确保你既读取了 ResultSetMetaData,又正确遍历 ResultSet 对象。 } } catch (SQLException e) { e.printStackTrace(); } finally { if (con != null) { con.close(); } if (stmt != null) { stmt.close(); } if (res != null) { res.close(); } } }}
二、JDBC 查询数据数量
如果你需要查询数据库中某个表的记录数量,可以使用以下方法。以下是完整的代码片段:
package com.example.jdbc;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;import java.sql.ResultSet;public class JdbcCountData { public static void main(String[] args) { // parameters for database connection String url = "jdbc:oracle:thin:@//132.77.74.87/lyxt"; String username = "admin"; String password = "admin"; String sql = "SELECT COUNT(*) FROM RESOURCE_OA"; Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; int count = 0; try { Class.forName("com.oracle.jdbc.Driver"); conn = DriverManager.getConnection(url, username, password); ps = conn.prepareStatement(sql); rs = ps.executeQuery(); while (rs.next()) { count = rs.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } finally { // 确保数据库资源被释放 if (conn != null) { conn.close(); } if (ps != null) { ps.close(); } if (rs != null) { rs.close(); } } }}
三、JDBC 查询数据并生成列表
为了方便数据处理,可以将查询结果转换为列表形式。以下是一个实现该功能的代码片段:
package com.example.jdbc;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public class JdbcListData { public static ResultSet getResultSet(Connection conn, String sql) { try { PreparedStatement ps = conn.prepareStatement(sql); return ps.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } } public static Connection getMySQLConnection() { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root"); } catch (SQLException e) { e.printStackTrace(); } return conn; } public static ListlistData(String sql) { List list = new ArrayList<>(); Connection conn = getMySQLConnection(); ResultSet rs = getResultSet(conn, sql); try { while (rs.next()) { String data = rs.getString(1); list.add(data); } } catch (SQLException e) { e.printStackTrace(); } finally { rs.close(); if (conn != null) { conn.close(); } } return list; } public static void main(String[] args) { List dataList = listData("SELECT name FROM user_table"); System.out.println("结果列表: " + dataList); }}
四、JDBC 批处理
对于需要批量执行 SQL 语句的情况,JDBC 提供了批处理功能,可以提高处理效率。以下是一个批量执行 SQL 的实现:
package com.example.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.List;import java.util.ArrayList;public class JdbcBatch { public static void executeSQLs(Connection conn, Listsqls) { try { if (conn == null) { throw new SQLException("数据库连接为空!"); } Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.EMPTY_RESULTSET); for (String sql : sqls) { stmt.addBatch(sql); } stmt.executeBatch(); System.out.println("批量执行成功!"); // 关闭资源 stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { List sqlList = new ArrayList<>(); sqlList.add("UPDATE user_table SET name = '张三';"); sqlList.add("UPDATE user_table SET name = '李四';"); Connection conn = getMySQLConnection(); executeSQLs(conn, sqlList); }}
五、JDBC 执行不带参数的存储过程
存储过程是数据库中用户定义的子程序,可以通过 JDBC 调用。以下是一个调用不带参数的存储过程的示例:
package com.example.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class JdbcProcedure { public static void callProcedure(String procedureName) { Connection conn = null; try { System.out.println("执行存储过程: " + procedureName); Class.forName("com.oracle.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//132.77.74.87/lyxt", "admin", "admin"); // 准备调用存储过程的语句 CallableStatement cs = conn.prepareCall("{call " + procedureName + "}"); cs.execute(); } catch (SQLException e) { e.printStackTrace(); } finally { if (conn != null) { conn.close(); } } } public static void main(String[] args) { callProcedure("procedure_name"); }}
六、执行带参数的存储过程
对于带参数的存储过程,可以按照以下步骤进行调用。以下是一个实现示例:
package com.example.jdbc;import java.sql_CONNECTION;import java.sql.DriverManager;import java.sql.CallableStatement;import java.sql.SQLException;public class JdbcNamedParameter { public static void testStoredProcedure() { System.out.println("正在执行带参数的存储过程"); Connection conn = getMySQLConnection(); try { CallableStatement cs = conn.prepareCall("{call insert_user(? , ?)}"); cs.setString(1, "张三"); cs.setInt(2, 30); cs.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { if (conn != null) { conn.close(); } } } public static void main(String[] args) { testStoredProcedure(); }}
以上是一些常见的 JDBC 使用方法和技巧,希望对你有所帮助!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月17日 08时45分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Hbase压力测试
2019-03-14
StreamReader & StreamWriter
2019-03-14
C#中的类、方法和属性
2019-03-14
Python爬虫训练:爬取酷燃网视频数据
2019-03-14
Python数据分析入门(十九):绘制散点图
2019-03-14
Callable中call方法和Runnable中run方法的区别
2019-03-14
Linux yum提示Loaded plugins错误的解决方法
2019-03-14
Netty的体系结构及使用
2019-03-14
xshell解决文本粘贴格式错误
2019-03-14
什么是证券型代币?
2019-03-14
Android中获取并设置屏幕亮度
2019-03-14
Swift中使用DispatchGroup分组管理异步任务
2019-03-14
MVVM_Template
2019-03-14
网络+图片加载框架(英文版)
2019-03-14
Python imageio方法示例
2019-03-14
Possible missing firmware
2019-03-14
JAVA BigInteger和BigDecimal类常用方式
2019-03-14
深度学习框架 各种模型下载集合 -- models list
2019-03-14
six.move 的作用
2019-03-14