sqlhelper java_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);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 SQLHelper 类,使用 Java 和 JDBC 进行数据库操作: ```java import java.sql.*; public class SQLHelper { private Connection conn = null; private Statement stmt = null; private ResultSet rs = null; public SQLHelper(String url, String user, String password) throws SQLException { conn = DriverManager.getConnection(url, user, password); stmt = conn.createStatement(); } public ResultSet executeQuery(String sql) throws SQLException { rs = stmt.executeQuery(sql); return rs; } public int executeUpdate(String sql) throws SQLException { return stmt.executeUpdate(sql); } public void close() throws SQLException { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } } ``` 使用该类可以执行 SQL 查询和更新操作。例如,查询语句可以这样执行: ```java String url = "jdbc:mysql://localhost:3306/mydb"; String user = "root"; String password = "root"; SQLHelper sqlHelper = new SQLHelper(url, user, password); String sql = "SELECT * FROM mytable"; ResultSet rs = sqlHelper.executeQuery(sql); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); System.out.println("id=" + id + ", name=" + name + ", age=" + age); } sqlHelper.close(); ``` 更新语句可以这样执行: ```java String url = "jdbc:mysql://localhost:3306/mydb"; String user = "root"; String password = "root"; SQLHelper sqlHelper = new SQLHelper(url, user, password); String sql = "UPDATE mytable SET name='Alice' WHERE id=1"; int rowsAffected = sqlHelper.executeUpdate(sql); System.out.println(rowsAffected + " rows affected"); sqlHelper.close(); ``` 注意,这只是一个简单的 SQLHelper 类,实际应用中需要考虑更多的异常处理、连接池等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值