同步操作将从 老馬/WebJava 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package Web;/*** 数据库操作* @author Ma*/import com.sun.org.apache.regexp.internal.REUtil;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.sql.Types;import java.util.logging.Level;import java.util.logging.Logger;public class DB {public static Connection Connection;public static int lastUserTime;public static void connection() {if ((Options.DBDriver != null) && (Options.DBURL != null) && (Options.DBUser != null) && (Options.DBPassword != null)) {String driver = Options.DBDriver; // 驱动程序名String url = Options.DBURL; // URL指向要访问的数据库名try {Class.forName(driver); // 加载驱动程序Connection conn = DriverManager.getConnection(url, Options.DBUser, Options.DBPassword); // 连续数据库//验证是否连接成功if (!conn.isClosed()) {DB.Connection = conn;DB.lastUserTime = (int) (System.currentTimeMillis() / 1000);} else {DB.Connection = null;}//DB.Connection.close();如果会自动处理就不用手动释放资源了} catch (ClassNotFoundException ex) {Logger.getLogger(Allocation.class.getName()).log(Level.SEVERE, null, ex);System.exit(-1);} catch (SQLException ex) {Logger.getLogger(Allocation.class.getName()).log(Level.SEVERE, null, ex);System.exit(-1);} catch (Exception ex) {Logger.getLogger(Allocation.class.getName()).log(Level.SEVERE, null, ex);}}}/*** 用原生态的executeQuery 返回ResultSet** @param sql* @param params* @return ResultSet*/public static ResultSet executeQuery(String sql, String... params) {DB.cursor();PreparedStatement statement;try {statement = DB.Connection.prepareStatement(sql);for (int i = 0; i < params.length; i++) {statement.setString((i + 1), params[i]);}ResultSet r = statement.executeQuery();return r;} catch (SQLException ex) {Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex);}return null;}/*** 用原生态的executeUpdate** @param sql* @param params* @return*/public static int executeUpdate(String sql, String... params) {DB.cursor();try {PreparedStatement statement = DB.Connection.prepareStatement(sql);for (int i = 0; i < params.length; i++) {statement.setString((i + 1), params[i]);}int r = statement.executeUpdate();statement.close();return r;} catch (SQLException ex) {Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex);}return 0;}/*** 获取多个结果集** @param sql* @param params*/public static Object[][] get(String sql, String... params) {DB.cursor();Object[][] data = null;try {PreparedStatement statement = DB.Connection.prepareStatement(sql);for (int i = 0; i < params.length; i++) {statement.setString((i + 1), params[i]);}ResultSet r = statement.executeQuery();//获取字段信息getMetaDataResultSetMetaData columns = r.getMetaData();int columnCount = columns.getColumnCount();String[] columnName = new String[columnCount];int[] columnTypeName = new int[columnCount];for (int i = 1; i <= columnCount; i++) {columnName[i - 1] = columns.getColumnName(i);columnTypeName[i - 1] = DB.getTypeName(columns.getColumnType(i));}r.last();int rowCount = r.getRow();if (rowCount < 1) {return new Object[rowCount][columnCount];}r.first();data = new Object[rowCount][columnCount];int i = 0;do {Object[] temp = new Object[columnCount];for (int j = 0; j < columnName.length; j++) {switch (columnTypeName[j]) {case 0:temp[j] = r.getBoolean(j + 1);break;case 1:temp[j] = r.getInt(j + 1);break;default:temp[j] = r.getString(j + 1);break;}}data[i] = temp;i++;} while (r.next());//随手关闭r.close();statement.close();return data;} catch (SQLException ex) {Logger.getLogger(Handler.class.getName()).log(Level.SEVERE, null, ex);}return data;}/*** 获取一行** @param sql* @param params* @return*/public static Object[] find(String sql, String... params) {Object[][] r = DB.get(sql, params);if (r.length < 1) {return new Object[0];}return r[0];}/*** 获取一个字段** @param sql* @param params* @return*/public static Object getField(String sql, String... params) {Object[][] r = DB.get(sql, params);if (r.length < 1) {return null;} else {return r[0][0];}}/*** 更新数据** @param sql* @param params* @return*/public static int update(String sql, String... params) {DB.cursor();try {PreparedStatement statement = DB.Connection.prepareStatement(sql);for (int i = 0; i < params.length; i++) {statement.setString((i + 1), params[i]);}//获取字段信息getMetaDataint r = statement.executeUpdate();statement.close();return r;} catch (SQLException ex) {Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex);}return 0;}public static int insert(String sql, String... params) {return DB.update(sql, params);}public static int delete(String sql, String... params) {return DB.update(sql, params);}/*** 解析SQL便于开发** @param sql* @param params* @return*/public static String getSQL(String sql, String... params) {for (int i = 0; i < params.length; i++) {sql = sql.replaceFirst("\\?", sql);}return sql;}public static int getTypeName(int typeId) {switch (typeId) {case Types.NUMERIC://Int 类型return 1;case Types.BOOLEAN://Boolean类型return 0;default://其余的当作String处理return 2;}}/*** 检查链接时间是否过期*/public static void cursor() {if ((DB.lastUserTime + Options.DBIdleTime) < System.currentTimeMillis()) {DB.connection();} else {DB.lastUserTime = (int) System.currentTimeMillis() / 1000;}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。