java 版本SQLHelper
package com.jack.SQLHelper;import java.sql.*;
import java.util.logging.*;
import javax.swing.table.*;/*** SQL 基本操作* 通过它,可以很轻松的使用 JDBC 来操纵数据库* @author Null*/
public class SQLHelper
{/*** 驱动*/public static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";/*** 连接字符串*/public static String url = "jdbc:sqlserver://localhost:1433;databaseName=J2ee;";/*** 用户名*/public static String user = "null";/*** 密码*/public static String password = "123456";/*** 不允许实例化该类*/private SQLHelper(){}/*** 获取一个数据库连接* 通过设置类的 driver / url / user / password 这四个静态变量来 设置数据库连接属性* @return 数据库连接*/public static Connection getConnection(){try{// 获取驱动,这里使用的是 sqljdbc_1.2.2828.100_chs.exe,不同版本的驱动,语句有所不同Class.forName(driver);} catch (ClassNotFoundException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);}try{return DriverManager.getConnection(url, user, password);} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);return null;}}/*** 获取一个 Statement* 该 Statement 已经设置数据集 可以滚动,可以更新* @return 如果获取失败将返回 null,调用时记得检查返回值*/public static Statement getStatement(){Connection conn = getConnection();if (conn == null){return null;}try{return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);// 设置数据集可以滚动,可以更新} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);close(conn);}return null;}/*** 获取一个 Statement* 该 Statement 已经设置数据集 可以滚动,可以更新* @param conn 数据库连接* @return 如果获取失败将返回 null,调用时记得检查返回值*/public static Statement getStatement(Connection conn){if (conn == null){return null;}try{return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);// 设置数据集可以滚动,可以更新} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);return null;}}/*** 获取一个带参数的 PreparedStatement* 该 PreparedStatement 已经设置数据集 可以滚动,可以更新* @param cmdText 需要 ? 参数的 SQL 语句* @param cmdParams SQL 语句的参数表* @return 如果获取失败将返回 null,调用时记得检查返回值*/public static PreparedStatement getPreparedStatement(String cmdText, Object... cmdParams){Connection conn = getConnection();if (conn == null){return null;}PreparedStatement pstmt = null;try{pstmt = conn.prepareStatement(cmdText, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);int i = 1;for (Object item : cmdParams){pstmt.setObject(i, item);i++;}} catch (SQLException e){e.printStackTrace();close(conn);}return pstmt;}/*** 获取一个带参数的 PreparedStatement* 该 PreparedStatement 已经设置数据集 可以滚动,可以更新* @param conn 数据库连接* @param cmdText 需要 ? 参数的 SQL 语句* @param cmdParams SQL 语句的参数表* @return 如果获取失败将返回 null,调用时记得检查返回值*/public static PreparedStatement getPreparedStatement(Connection conn, String cmdText, Object... cmdParams){if (conn == null){return null;}PreparedStatement pstmt = null;try{pstmt = conn.prepareStatement(cmdText, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);int i = 1;for (Object item : cmdParams){pstmt.setObject(i, item);i++;}} catch (SQLException e){e.printStackTrace();close(pstmt);}return pstmt;}/*** 执行 SQL 语句,返回结果为整型* 主要用于执行非查询语句* @param cmdText SQL 语句* @return 非负数:正常执行; -1:执行错误; -2:连接错误*/public static int ExecSql(String cmdText){Statement stmt = getStatement();if (stmt == null){return -2;}int i;try{i = stmt.executeUpdate(cmdText);} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null,ex);i = -1;}closeConnection(stmt);return i;}/*** 执行 SQL 语句,返回结果为整型* 主要用于执行非查询语句* @param cmdText SQL 语句* @return 非负数:正常执行; -1:执行错误; -2:连接错误*/public static int ExecSql(Connection conn, String cmdText){Statement stmt = getStatement(conn);if (stmt == null){return -2;}int i;try{i = stmt.executeUpdate(cmdText);} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null,ex);i = -1;}close(stmt);return i;}/*** 执行 SQL 语句,返回结果为整型* 主要用于执行非查询语句* @param cmdText 需要 ? 参数的 SQL 语句* @param cmdParams SQL 语句的参数表* @return 非负数:正常执行; -1:执行错误; -2:连接错误*/public static int ExecSql(String cmdText, Object... cmdParams){PreparedStatement pstmt = getPreparedStatement(cmdText, cmdParams);if (pstmt == null){return -2;}int i;try{i = pstmt.executeUpdate();} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null,ex);i = -1;}closeConnection(pstmt);return i;}/*** 执行 SQL 语句,返回结果为整型* 主要用于执行非查询语句* @param conn 数据库连接* @param cmdText 需要 ? 参数的 SQL 语句* @param cmdParams SQL 语句的参数表* @return 非负数:正常执行; -1:执行错误; -2:连接错误*/public static int ExecSql(Connection conn, String cmdText, Object... cmdParams){PreparedStatement pstmt = getPreparedStatement(conn, cmdText, cmdParams);if (pstmt == null){return -2;}int i;try{i = pstmt.executeUpdate();} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);i = -1;}close(pstmt);return i;}/*** 返回结果集的第一行的一列的值,其他忽略* @param cmdText SQL 语句* @return*/public static Object ExecScalar(String cmdText){ResultSet rs = getResultSet(cmdText);Object obj = buildScalar(rs);closeConnection(rs);return obj;}/*** 返回结果集的第一行的一列的值,其他忽略* @param conn 数据库连接* @param cmdText SQL 语句* @return*/public static Object ExecScalar(Connection conn, String cmdText){ResultSet rs = getResultSet(conn, cmdText);Object obj = buildScalar(rs);closeEx(rs);return obj;}/*** 返回结果集的第一行的一列的值,其他忽略* @param cmdText 需要 ? 参数的 SQL 语句* @param cmdParams SQL 语句的参数表* @return*/public static Object ExecScalar(String cmdText, Object... cmdParams){ResultSet rs = getResultSet(cmdText, cmdParams);Object obj = buildScalar(rs);closeConnection(rs);return obj;}/*** 返回结果集的第一行的一列的值,其他忽略* @param conn 数据库连接* @param cmdText 需要 ? 参数的 SQL 语句* @param cmdParams SQL 语句的参数表* @return*/public static Object ExecScalar(Connection conn, String cmdText, Object... cmdParams){ResultSet rs = getResultSet(conn, cmdText, cmdParams);Object obj = buildScalar(rs);closeEx(rs);return obj;}/*** 返回一个 ResultSet* @param cmdText SQL 语句* @return*/public static ResultSet getResultSet(String cmdText){Statement stmt = getStatement();if (stmt == null){return null;}try{return stmt.executeQuery(cmdText);} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);closeConnection(stmt);}return null;}/*** 返回一个 ResultSet* @param conn* @param cmdText SQL 语句* @return*/public static ResultSet getResultSet(Connection conn, String cmdText){Statement stmt = getStatement(conn);if (stmt == null){return null;}try{return stmt.executeQuery(cmdText);} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);close(stmt);}return null;}/*** 返回一个 ResultSet* @param cmdText 需要 ? 参数的 SQL 语句* @param cmdParams SQL 语句的参数表* @return*/public static ResultSet getResultSet(String cmdText, Object... cmdParams){PreparedStatement pstmt = getPreparedStatement(cmdText, cmdParams);if (pstmt == null){return null;}try{return pstmt.executeQuery();} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);closeConnection(pstmt);}return null;}/*** 返回一个 ResultSet* @param conn 数据库连接* @param cmdText 需要 ? 参数的 SQL 语句* @param cmdParams SQL 语句的参数表* @return*/public static ResultSet getResultSet(Connection conn, String cmdText, Object... cmdParams){PreparedStatement pstmt = getPreparedStatement(conn, cmdText, cmdParams);if (pstmt == null){return null;}try{return pstmt.executeQuery();} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);close(pstmt);}return null;}public static Object buildScalar(ResultSet rs){if (rs == null){return null;}Object obj = null;try{if (rs.next()){obj = rs.getObject(1);}} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);}return obj;}/*** 从 ResultSet 中构建 DefaultTableModel* @param rs ResultSet* @return*/public static DefaultTableModel buildTableModel(ResultSet rs){if (rs == null){return null;}ResultSetMetaData rsm;String[] columnNames = null; // 列标题Object[][] data = null; // 数据项DefaultTableModel model; // 表格模型try{// 查询语句rsm = rs.getMetaData();// 判断时候可以实现对数据库的更新if (rs.getConcurrency() == ResultSet.CONCUR_UPDATABLE){System.out.println("Can UPDATABLE");} else{System.out.println("Only Ready");}// 获取列标题columnNames = new String[rsm.getColumnCount()];for (int i = 0; i < rsm.getColumnCount(); i++){columnNames[i] = rsm.getColumnName(i + 1);}int row = 0;int colum = 0;int columCount = rsm.getColumnCount();// 获取行数,没有直接的方法,这里先移动到纪录结尾,获取行号,即为行数,然后再移回来rs.last();int rowCount = rs.getRow();rs.beforeFirst();System.out.println("rowCount:" + rowCount);// 读取数据到数据项变量data = new Object[rowCount][columCount];while (rs.next()){for (colum = 0; colum < rsm.getColumnCount(); colum++){data[row][colum] = rs.getObject(colum + 1);}row++;}} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null,ex);return null;}// 初始化数据模型model = new DefaultTableModel(data, columnNames){/*** 重写 getColumnClass 可以使表格自动识别数据类型*/@SuppressWarnings("unchecked")@Overridepublic Class getColumnClass(int c){// 这里要对空数据集进行检验if (dataVector.isEmpty() == false && getValueAt(0, c) != null){return getValueAt(0, c).getClass();} else{return Object.class;}}};return model;}/*** 获取一个数据模型 该表格模型只能用来显示数据,如果需要更新数据,请使用 DataSet getDataSet(String cmdText)** @param conn 数据库连接* @param cmdText* 能返回一个数据集的查询SQL 语句* @return 表格数据模型*/public static DefaultTableModel getTableModel(Connection conn, String cmdText){ResultSet rs = getResultSet(conn, cmdText);DefaultTableModel tm = buildTableModel(rs);closeEx(rs);return tm;}/*** 获取一个数据模型 该表格模型只能用来显示数据,如果需要更新数据,请使用 DataSet getDataSet(String cmdText)** @param cmdText 需要 ? 参数的 SQL 语句* @param cmdParams SQL 语句的参数表* @return 表格数据模型*/public static DefaultTableModel getTableModel(String cmdText, Object... cmdParams){// 查询语句ResultSet rs = getResultSet(cmdText, cmdParams);DefaultTableModel tm = buildTableModel(rs);closeConnection(rs);return tm;}/*** 获取一个数据模型 该表格模型只能用来显示数据,如果需要更新数据,请使用 DataSet getDataSet(String cmdText)* * @param cmdText* 能返回一个数据集的查询SQL 语句* @return 表格数据模型*/public static DefaultTableModel getTableModel(String cmdText){// 查询语句ResultSet rs = getResultSet(cmdText);DefaultTableModel tm = buildTableModel(rs);closeConnection(rs);return tm;}/*** 获取一个数据模型 该表格模型只能用来显示数据,如果需要更新数据,请使用 DataSet getDataSet(String cmdText)* @param conn 数据库连接* @param cmdText 需要 ? 参数的 SQL 语句* @param cmdParams SQL 语句的参数表* @return 表格数据模型*/public static DefaultTableModel getTableModel(Connection conn, String cmdText, Object... cmdParams){ResultSet rs = getResultSet(conn, cmdText, cmdParams);DefaultTableModel tm = buildTableModel(rs);closeEx(rs);return tm;}/*** 获取一个具有更新功能的数据模型 如果只要读取数据,就不要用它了* @param cmdText 能返回一个数据集的查询SQL 语句* @return 表格数据模型*/public static DataSet getDataSet(String cmdText){Statement stmt = getStatement();DataSet dbc = new DataSet();if (stmt == null){dbc.code = -2;return dbc;}try{// 查询语句dbc.rs = stmt.executeQuery(cmdText);dbc.model = buildTableModel(dbc.rs);dbc.code = dbc.model.getRowCount();} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);dbc.code = -1;}return dbc;}/*** 获取一个具有更新功能的数据模型 如果只要读取数据,就不要用它了* @param conn 数据库连接* @param cmdText 能返回一个数据集的查询SQL 语句* @return 表格数据模型*/public static DataSet getDataSet(Connection conn, String cmdText){Statement stmt = getStatement(conn);DataSet dbc = new DataSet();if (stmt == null){dbc.code = -2;return dbc;}try{// 查询语句dbc.rs = stmt.executeQuery(cmdText);dbc.model = buildTableModel(dbc.rs);dbc.code = dbc.model.getRowCount();} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);dbc.code = -1;}return dbc;}/*** 获取一个具有更新功能的数据模型 如果只要读取数据,就不要用它了* @param cmdText 需要 ? 参数的 SQL 语句* @param cmdParams SQL 语句的参数表* @return 表格数据模型*/public static DataSet getDataSet(String cmdText, Object... cmdParams){PreparedStatement pstmt = getPreparedStatement(cmdText, cmdParams);DataSet dbc = new DataSet();if (pstmt == null){dbc.code = -2;return dbc;}try{// 查询语句dbc.rs = pstmt.executeQuery();dbc.model = buildTableModel(dbc.rs);dbc.code = dbc.model.getRowCount();} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);dbc.code = -1;}return dbc;}/*** 获取一个具有更新功能的数据模型 如果只要读取数据,就不要用它了* @param conn 数据库连接* @param cmdText 需要 ? 参数的 SQL 语句* @param cmdParams SQL 语句的参数表* @return 表格数据模型*/public static DataSet getDataSet(Connection conn, String cmdText, Object... cmdParams){PreparedStatement pstmt = getPreparedStatement(conn, cmdText, cmdParams);DataSet dbc = new DataSet();if (pstmt == null){dbc.code = -2;return dbc;}try{// 查询语句dbc.rs = pstmt.executeQuery();dbc.model = buildTableModel(dbc.rs);dbc.code = dbc.model.getRowCount();} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);dbc.code = -1;}return dbc;}private static void close(Object obj){if (obj == null){return;}try{if (obj instanceof Statement){((Statement) obj).close();} else if (obj instanceof PreparedStatement){((PreparedStatement) obj).close();} else if (obj instanceof ResultSet){((ResultSet) obj).close();} else if (obj instanceof Connection){((Connection) obj).close();}} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);}}private static void closeEx(Object obj){if (obj == null){return;}try{if (obj instanceof Statement){((Statement) obj).close();} else if (obj instanceof PreparedStatement){((PreparedStatement) obj).close();} else if (obj instanceof ResultSet){((ResultSet) obj).getStatement().close();} else if (obj instanceof Connection){((Connection) obj).close();}} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);}}private static void closeConnection(Object obj){if (obj == null){return;}try{if (obj instanceof Statement){((Statement) obj).getConnection().close();} else if (obj instanceof PreparedStatement){((PreparedStatement) obj).getConnection().close();} else if (obj instanceof ResultSet){((ResultSet) obj).getStatement().getConnection().close();} else if (obj instanceof Connection){((Connection) obj).close();}} catch (SQLException ex){Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);}}
}
java 版本SQLHelper相关推荐
- 下载最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错
下线最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错 cmd: mvn -v Exception in thread "main" ja ...
- linux 修改java版本_Linux 有问必答:如何在 Linux 中改变默认的 Java 版本
提问:当我尝试在Linux中运行一个Java程序时,我遇到了一个错误.看上去像程序编译所使用的Java版本与我本地的不同.我该如何在Linux上切换默认的Java版本? 当Java程序编译时,编译环境 ...
- java jnlp被阻止_JNLP应使用特定的Java版本,但会出现错误结果
我在这里面临一个问题.我想使用特殊版本来运行我们的 java webstart应用程序,但只需要一个jnlp. ("经过测试,- blabla我们不能使用新版本- blabla"随 ...
- Ubuntu/Debian 系统切换Java(JVM),修改Java版本,JAVA_HOME
http://blog.mypapit.net/2007/10/how-to-switch-between-different-java-jvm-in-ubuntu-and-debian-gnu-li ...
- mac os x java_Mac OS X和多个Java版本
守着一只汪 在Mac上管理多个Java版本的最简洁方法是使用Homebrew.在内Homebrew,使用:homebrew-cask 安装java的版本jenv 管理已安装的java版本如http:/ ...
- centos 更换java版本_centos7 更换jdk版本
查看java版本 java -version 如果有java版本(如果没有直接看红色虚线以下的) 输入 rpm -qa | grep java会显示以下几条内容: ******* ******** ...
- 【错误记录】Android 编译时技术版本警告 ( 注解处理器与主应用支持的 Java 版本不匹配 )
文章目录 一.报错信息 二.问题分析 三.解决方案 一.报错信息 在使用 Android 编译时技术 , 涉及 编译时注解 , 注解处理器 ; 开发注解处理器后 , 编译报如下警告 ; 该警告不会影响 ...
- 【Android APT】注解处理器 ( 配置注解依赖、支持的注解类型、Java 版本支持 )
文章目录 一.注解处理器 依赖 编译时注解 二.设置 注解处理器 支持的注解类型 三.设置 注解处理器 支持的 Java 版本 四.博客资源 Android APT 学习进阶路径 : 推荐按照顺序阅读 ...
- 【SmartJob】【隔离装置】WEB/统计程序和隔离程序共享服务器时的JAVA版本冲突问题
SmartJob.DmsWeb与SmartSys共享服务器容易引发Java版本冲突问题: Java版本不正确 UnsupportedClassVersionError Exception in thr ...
最新文章
- 分享一个帮助你自定义标签并且兼容现代浏览器的javascript类库 : X-tag
- 员外陪你读论文:DeepWalk: Online learning of Social Representations
- Linux学习:gcc 编译工作流程
- 展示 测速_科技产品 | 人工智能amp;科技展示厅——助力高校人工智能学科建设及产业人才培养...
- 头像裁剪上传插件php,PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
- d3js mysql_D3.js入门指南
- Android开发删除短信
- JS实现Ajax异步刷新
- java axis2 开发webservice_利用Axis2开发WebService(3)—用Java实现调用WebService的客户端程序 | 学步园...
- TCP/IP协议栈:TCP超时重传机制
- 【初赛】「阅读程序」题答v1.0
- HDU 2256(矩阵快速幂)
- figure函数--Matplotlib
- 计算机网络信息安全参考文献,最新网络信息安全参考文献 网络信息安全参考文献有哪些...
- DM8达梦数据库:sql查询达梦数据库实例的详情
- 开发商给埋的五类网线,家中想改为千兆网络怎么办好?
- 卡耐基梅隆大学计算机科学课本,美国卡耐基梅隆大学计算机科学硕士.pdf
- 使用Windows批处理+ImageMagick 实现批量处理图片
- windows操作系统深度清理垃圾脚本
- 软件测试工程师应该学Python还是学Java?
热门文章
- 【Groovy】集合遍历 ( 使用集合的 collect 循环遍历集合并根据指定闭包规则生成新集合 | 代码示例 )
- 【C 语言】文件操作 ( 按照单个字符的方式读写文件 | fgetc 函数 | fputc 函数 )
- 【Android 启动过程】Activity 启动源码分析 ( AMS -> ActivityThread、AMS 线程阶段 二 )
- 【计算机网络】数据链路层 : IEEE 802.11 无线局域网 ( 802.11 MAC 帧头格式 | 无线局域网分类 )
- 【Android应用开发】EasyDialog 源码解析
- 2018-2019-1 20165236 《信息安全系统设计基础》第4周学习总结
- Notepadd ++ PluginManager安装
- Agent Job相关的系统表
- 通过分析 JDK 源代码研究 Hash 存储机制
- 你真的了解try{ return }finally{}中的return?