package matrix; import java.sql.*; import java.util.Vector; public class SQL { /** 保存数据库间隔,秒为单位 */ public static int flush_time = 30; /** 最后一次数据库连接数据时间 */ public static int last_conn; /** 定时连接数据库,秒为单位,防止长时间不连接中断 */ public static int conn_time = 18000; static String driver = "org.gjt.mm.mysql.Driver"; static String url = "jdbc:mysql://MYSQL_IP:MYSQL_PORT/MYSQL_DB?useUnicode=true&characterEncoding=utf-8"; static Connection con; static Statement stmt; static String user; static String pass; static String db; /** 写入内存缓存 */ private static Vector inBuf = new Vector(); /** 更新数据库缓存 */ private static Vector outBuf = new Vector(); public static void connect(String ip, int port, String user, String pass, String db) { SQL.user = user; SQL.pass = pass; try { url = url.replaceAll("MYSQL_IP", ip); url = url.replaceAll("MYSQL_PORT", port + ""); url = url.replaceAll("MYSQL_DB", db); Class.forName(driver).newInstance(); con = DriverManager.getConnection(url, user, pass); DriverManager.setLoginTimeout(99999999); stmt = con.createStatement(); } catch (Exception e) { e.printStackTrace(); } } public static void Bye() { // flush(); try { stmt.close(); con.close(); } catch (Exception E) { } } public static ResultSet Select(String SQLString) { ResultSet rs = null; try { if (con.isClosed()) { con = DriverManager.getConnection(url, user, pass); stmt = con.createStatement(); } rs = stmt.executeQuery(SQLString); return rs; } catch (Exception E) { System.out.println(E.getMessage()); return null; } } /** 写缓存 */ public static void Update(String sql) { inBuf.add(sql); } public static void execute(String SQLString) { try { if (con.isClosed()) { con = DriverManager.getConnection(url, user, pass); stmt = con.createStatement(); } stmt.executeUpdate(SQLString); } catch (Exception E) { } } /** 写数据库 */ /* public static void flush() { String sql; if (inBuf.size() == 0) { if (Time.now - last_conn > conn_time) { sql = "select * from SysParam where id=1"; Select(sql); last_conn = Time.now; } return; } synchronized (inBuf) { outBuf = (Vector) inBuf.clone(); inBuf.clear(); } for (int i = 0; i < outBuf.size(); i++) { sql = (String) outBuf.get(i); Log.sql("flush update[user=" + user + ",pass=" + pass + "] - (" + sql + ")"); execute(sql); Log.sql("flush update done"); } outBuf.clear(); } * */ public static String encode(String str) { String res = ""; try { res = java.net.URLEncoder.encode(str, "UTF-8"); } catch (Exception e) { res = str; } finally { return res; } } public static String decode(String str) { String res = ""; try { res = java.net.URLDecoder.decode(str, "UTF-8"); } catch (Exception e) { res = str; } finally { return res; } } }