• SQLite总结


    废话不多说:

    优点,高并发读快速度读取超越所有主流大中型数据库

    缺点,缺少同步机制,读写不能同时,且同时只能有一个写入线程

    用途,硬盘式缓存

    另附一SQLite工具类:

    import java.io.FileWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.util.List;
    import java.util.Map;
    
    public class SQLiteHelper {
    
    	private static final String dbDriver = "org.sqlite.JDBC";
    
    	public static int createTable(String dbUrl, String sql) {
    		try {
    			if (sql == null || sql.trim().length() < 1)
    				return -1;
    			Class.forName(dbDriver);
    
    			if (dbUrl.indexOf("jdbc:sqlite:") != 0) {
    				dbUrl = "jdbc:sqlite:" + dbUrl;
    			}
    			if (!dbUrl.endsWith(".db")) {
    				dbUrl = dbUrl + ".db";
    			}
    
    			Connection con = DriverManager.getConnection(dbUrl);
    			con.setAutoCommit(true);
    			System.out.println(sql);
    			FileWriter wr = new FileWriter("create.sql", true);
    			wr.append(sql + "
    ");
    			wr.close();
    			con.close();
    			return con.prepareStatement(sql).executeUpdate();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return -1;
    	}
    
    	public static int excuteUpdate(String dbUrl, String sql, Object[]... params) {
    		try {
    			if (sql == null || sql.trim().length() < 1)
    				return -1;
    			Class.forName(dbDriver);
    
    			if (dbUrl.indexOf("jdbc:sqlite:") != 0) {
    				dbUrl = "jdbc:sqlite:" + dbUrl;
    			}
    			if (!dbUrl.endsWith(".db")) {
    				dbUrl = dbUrl + ".db";
    			}
    
    			Connection con = DriverManager.getConnection(dbUrl);
    			con.setAutoCommit(false);
    
    			Object[] param = null;
    			PreparedStatement ps = con.prepareStatement(sql);
    			for (int i = 0; i < params.length;) {
    				if (params != null) {
    					param = params[i];
    					for (int j = 1; j <= param.length;) {
    						if (param[j - 1] == null) {
    							continue;
    						}
    						ps.setObject(j, param);
    						j++;
    					}
    				}
    				ps.addBatch();
    				i++;
    			}
    
    			int num = ps.executeUpdate();
    			ps.clearBatch();
    			con.commit();
    			con.close();
    			return num;
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return -1;
    	}
    
    	public static List<Map<String, Object>> readDb(String dbUrl, String sql, Object... param) {
    		try {
    			if (sql == null || sql.trim().length() < 1)
    				return null;
    			if (dbUrl.indexOf("jdbc:sqlite:") != 0) {
    				dbUrl = "jdbc:sqlite:" + dbUrl;
    			}
    			if (!dbUrl.endsWith(".db")) {
    				dbUrl = dbUrl + ".db";
    			}
    			Class.forName(dbDriver);
    			Connection con = DriverManager.getConnection(dbUrl);
    			PreparedStatement ps = con.prepareStatement(sql);
    			for (int j = 1; j <= param.length;) {
    				if (param[j - 1] == null) {
    					continue;
    				}
    				ps.setObject(j, param);
    				j++;
    			}
    			con.close();
    			return new ListResult(ps.executeQuery()).getListRestlt();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    
    }
    

      

  • 相关阅读:
    《大型网站技术架构》学习笔记——架构演化
    ASP.NET MVC之Html.RenderAction
    设计模式学习笔记——面向对象设计原则
    设计模式学习笔记——类图
    观察者模式
    泛型接口
    泛型的实例化应用
    多线程第二种方式-实现runnable
    对象中的某个属性不希望被序例化--transient
    对象序例化
  • 原文地址:https://www.cnblogs.com/swtjavaspace/p/6704119.html
Copyright © 2020-2023  润新知