你也可以拿来用的JDBC操作
2015-09-20 17:53
197 查看
你也可以拿来用的JDBC操作
在生活中,qq保存你的聊天记录,空间动态,学校管理系统保存你的基本信息和学习成绩,我们把数据放在一个安全而且方便存取的地方,这个地方就叫数据库。作为程序的“硬盘”,数据库对一个应用程序来说,有着极其重要的作用。
既然数据库如此重要,那么你觉得数据库的操作是不是应该好好掌握呢?“工欲善其事,必先利其器”,要想为你的应用程序做一个强大的“硬盘”,那么请学习JDBC技术,当然,我也只是和你一样还在学习当中。
从基础做起,jdbc的技术是非常简单的,就是四步:
一·加载数据库驱动类
二.连接数据库
三.进行数据库的一些基本操作
四.关闭数据库连接资源
在这四步当中,我们要花大力气下工夫的是数据库的操作,其实操作就是两种,一种是数据查询,一种是数据更新,虽然说只有两种操作,但是却并非你想象的简单,因为在实际应用中,操作的数据库的表各异,我们程序要实现的逻辑业务更是五花八门,所以我们写的代码要前要深思熟虑,下面是我通过学习总结和参考别人代码,写的一个数据库操作类,包括了以上四个步骤,且基本满足各种需求。如果你把我的代码拷过去,实现了你的某个逻辑业务,那我的这篇博客就,值了!
package com.ljh.db; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 数据库操作类,包括连接,查询,更新等方法 * @author 李佳豪 * */ public class DBOperator { /** * 数据库驱动类名称 */ private static String DRIVER = "com.mysql.jdbc.Driver"; /** * 连接协议地址字符串 */ private String url = "jdbc:mysql://localhost:3306/study?useUnicode=true&characterEncoding=utf-8"; /** * 用户名 */ private String username = "xxx"; /** * 密码 */ private String password = "xxxx"; /** * 创建数据库连接对象 */ private Connection connnection = null; /** * 创建PreparedStatement对象 */ private PreparedStatement preparedStatement = null; /** * 创建CallableStatement对象 */ private CallableStatement callableStatement = null; /** * 创建结果集对象 */ private ResultSet resultSet = null; static { try { // 加载数据库驱动程序 Class.forName(DRIVER); } catch (ClassNotFoundException e) { System.out.println("加载驱动错误"); e.printStackTrace(); } } /** *带参构造方法 */ public DBOperator(String url,String username,String password){ this.url=url; this.username=username; this.password=password; } /** * 无参构造方法 * */ public DBOperator(){ } /** * 建立数据库连接 * * @return 数据库连接 */ public Connection getConnection() { try { // 获取连接 connnection = DriverManager.getConnection(url, username,password); } catch (SQLException e) { System.out.println(e.getMessage()); } return connnection; } /** * insert update delete SQL语句的执行的统一方法 * * @param sql * SQL语句 * @param params * 参数数组,若没有参数则为null * @return 受影响的行数,可通过此参数判断更新操作是否成功 */ public int update(String sql, Object[] params) { // 受影响的行数 int affectedLine = 0; try { // 获得连接 connnection = this.getConnection(); // 调用SQL预编译 preparedStatement = connnection.prepareStatement(sql); // 参数赋值 if (params != null) { for (int i = 0; i < params.length; i++) { preparedStatement.setObject(i + 1, params[i]); } } //得到应更新操作而受影响的行数 affectedLine = preparedStatement.executeUpdate(); } catch (SQLException e) { System.out.println(e.getMessage()); } finally { // 释放资源 closeAll(); } return affectedLine; } /** * SQL 查询将查询结果直接放入ResultSet中 * * @param sql * SQL语句 * @param params * 参数数组,若没有参数则为null * @return 结果集 */ private ResultSet queryRS(String sql, Object[] params) { try { // 获得连接 connnection = this.getConnection(); // 调用SQL preparedStatement = connnection.prepareStatement(sql); // 参数赋值 if (params != null) { for (int i = 0; i < params.length; i++) { preparedStatement.setObject(i + 1, params[i]); } } resultSet = preparedStatement.executeQuery(); } catch (SQLException e) { System.out.println(e.getMessage()); } return resultSet; } /** * SQL 查询将查询结果:某行某列 * * @param sql * SQL语句 * @param params * 参数数组,若没有参数则为null * @param columnName * 要查询的某一列的列名 * @return 结果集 */ public Object querySingle(String sql, Object[] params,String columnName) { Object object = null; try { // 获得连接 connnection = this.getConnection(); // 调用SQL preparedStatement = connnection.prepareStatement(sql); // 参数赋值 if (params != null) { for (int i = 0; i < params.length; i++) { preparedStatement.setObject(i + 1, params[i]); } } // 执行 resultSet = preparedStatement.executeQuery(); if (resultSet.next()) { object = resultSet.getObject(columnName); } } catch (SQLException e) { System.out.println(e.getMessage()); } finally { closeAll(); } return object; } /** * 获取结果集,并将结果放在List中 * * @param sql * SQL语句 * @return List 结果集 */ public List<Object> query(String sql, Object[] params) { // 执行SQL获得结果集 ResultSet rs = queryRS(sql, params); // 创建ResultSetMetaData对象 ResultSetMetaData rsmd = null; // 结果集列数 int columnCount = 0; try { rsmd = rs.getMetaData(); // 获得结果集列数 columnCount = rsmd.getColumnCount(); } catch (SQLException e1) { System.out.println(e1.getMessage()); } // 创建List List<Object> list = new ArrayList<Object>(); try { // 将ResultSet的结果保存到List中 while (rs.next()) { Map<String, Object> map = new HashMap<String, Object>(); for (int i = 1; i <= columnCount; i++) { map.put(rsmd.getColumnLabel(i), rs.getObject(i)); } list.add(map); } } catch (SQLException e) { System.out.println(e.getMessage()); } finally { // 关闭所有资源 closeAll(); } return list; } /** * 关闭所有资源 */ private void closeAll() { // 关闭结果集对象 if (resultSet != null) { try { resultSet.close(); } catc 26666 h (SQLException e) { System.out.println(e.getMessage()); } } // 关闭PreparedStatement对象 if (preparedStatement != null) { try { preparedStatement.close(); } catch (SQLException e) { System.out.println(e.getMessage()); } } // 关闭CallableStatement 对象 if (callableStatement != null) { try { callableStatement.close(); } catch (SQLException e) { System.out.println(e.getMessage()); } } // 关闭Connection 对象 if (connnection != null) { try { connnection.close(); } catch (SQLException e) { System.out.println(e.getMessage()); } } } }
相关文章推荐
- sparkSQL里 sql语句,dataframe,Thrift Server JDBC都可以实现对数据的查询,过滤等操作, 哪这3种情况分别是什么情况下使用
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- java jacob 操作word 文档,进行写操作,如生成表格,添加 图片(这个不错,可以拿来直接用,非常好)
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- java jacob 操作word 文档,进行写操作,如生成表格,添加 图片(这个不错,可以拿来直接用,非常好)
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- java jacob 操作word 文档,进行写操作,如生成表格,添加 图片(这个不错,可以拿来直接用,非常好)
- 在实际开发Java 系统时,我们可以通过JDBC 完成多种数据库操作。这里以传统JDBC 编 程中的查询操作为例进行说明,其主要步骤如下:
- 编写一个程序,可以通过此程序完成一个表的创建操作, 输入表名称、各个列的名称以及类型,输入完成后直接通过JDBC创建指定的表。
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- 编写一个程序,可以通过次程序完成一个表的创建操作,输入表的名称,各个列的名称及类型,输入完成后直接通过JDBC创建指定的表。
- JDBC(一)增,删,改,查操作
- 使用元数据简化jdbc代码---更新操作
- 使用JDBC-ODBC操作Access数据