This action will force synchronization from 老馬/WebJava, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
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;}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。