runxinzhi.com
首页
百度搜索
java版sqlhelper
这次做
LN
系统我负责的是连接数据库部分,
视频
已经录制完成,也传到了
网上
,希望网友们能指出我的不足,拜谢。下面是这次用到的
sqlhelper
的代码,权当作是留作备份了。
package sql; import java.sql.*; import java.util.logging.*; /** * SQL 基本操作 * 通过它,可以很轻松的使用 JDBC 来操纵数据库 * @author 郗晓勇 */ public class SQLHelper { /** * 驱动 */ public static String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; /** * 连接字符串 */ public static String url = "jdbc:microsoft:sqlserver://192.168.24.246:1433;DatabaseName=LiNing"; /** * 用户名 */ public static String user = "sa"; /** * 密码 */ 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; } /** * 获取一个具有更新功能的数据模型 如果只要读取数据,就不要用它了 * @param cmdText 能返回一个数据集的查询SQL 语句 * @return 表格数据模型 * * * DataSet 没有找到在哪个包中,因为暂时用不到所以省略此方法 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); } } }
原创文章,转载请注明出处:http://www.cnblogs.com/beijiguangyong/
相关阅读:
SQL Server, Timeout expired.all pooled connections were in use and max pool size was reached
javascript 事件调用顺序
Best Practices for Speeding Up Your Web Site
C语言程序设计 使用VC6绿色版
破解SQL Prompt 3.9的几步操作
Master page Path (MasterPage 路径)
几个小型数据库的比较
CSS+DIV 完美实现垂直居中的方法
由Response.Redirect引发的"Thread was being aborted. "异常的处理方法
Adsutil.vbs 在脚本攻击中的妙用
原文地址:https://www.cnblogs.com/beijiguangyong/p/2302737.html
最新文章
如何手动卸载 SQL Server 2005 实例(官方)
Aop获取bean的过程spring debug
spring启动过程之源码跟踪(中)spring Debug
spring启动过程之源码跟踪(续beanfactory)spring Debug
spring启动过程之源码跟踪(上)spring Debug
收缩事务日志
spring aop小结(概念解析)
spring启动过程之源码跟踪(下)spring Debug
spring启动过程之源码跟踪(小结bean的生命周期)spring Debug
c++ 字符串直接量
热门文章
java 解析 xml 文档
c++动态创建和销毁二维数组
C++ iterator const_iterator 与 const iterator
字符串分割成单词
c++ const 成员函数和mutable
C++对象的拷贝与赋值操作
c++ new和delete
转:C++中定义类的对象:用new和不用new有何区别?
C++ static 关键字详解
强烈推荐SQL Prompt 3.8,并发布SQL Prompt 3.8 ,SQL Refator 的xxx
Copyright © 2020-2023
润新知