1 package SQLite; 2 3 import java.sql.*; 4 import java.util.Properties; 5 6 public class JDBCDriver implements java.sql.Driver { 7 8 public static final int MAJORVERSION = 1; 9 10 public static boolean sharedCache = false; 11 12 public static String vfs = null; 13 14 private static java.lang.reflect.Constructor makeConn = null; 15 16 protected Connection conn; 17 18 static { 19 try { 20 Class connClass = null; 21 Class args[] = new Class[5]; 22 args[0] = Class.forName("java.lang.String"); 23 args[1] = args[0]; 24 args[2] = args[0]; 25 args[3] = args[0]; 26 args[4] = args[0]; 27 String jvers = java.lang.System.getProperty("java.version"); 28 String cvers; 29 if (jvers == null || jvers.startsWith("1.0")) { 30 throw new java.lang.Exception("unsupported java version"); 31 } else if (jvers.startsWith("1.1")) { 32 cvers = "SQLite.JDBC1.JDBCConnection"; 33 } else if (jvers.startsWith("1.2") || jvers.startsWith("1.3")) { 34 cvers = "SQLite.JDBC2.JDBCConnection"; 35 } else if (jvers.startsWith("1.4")) { 36 cvers = "SQLite.JDBC2x.JDBCConnection"; 37 } else if (jvers.startsWith("1.5")) { 38 cvers = "SQLite.JDBC2y.JDBCConnection"; 39 try { 40 Class.forName(cvers); 41 } catch (java.lang.Exception e) { 42 cvers = "SQLite.JDBC2x.JDBCConnection"; 43 } 44 } else { 45 cvers = "SQLite.JDBC2z.JDBCConnection"; 46 try { 47 Class.forName(cvers); 48 } catch (java.lang.Exception e) { 49 cvers = "SQLite.JDBC2y.JDBCConnection"; 50 try { 51 Class.forName(cvers); 52 } catch (java.lang.Exception ee) { 53 cvers = "SQLite.JDBC2x.JDBCConnection"; 54 } 55 } 56 } 57 connClass = Class.forName(cvers); 58 makeConn = connClass.getConstructor(args); java.sql.DriverManager.registerDriver(new JDBCDriver())59 java.sql.DriverManager.registerDriver(new JDBCDriver()); 60 try { 61 String shcache = 62 java.lang.System.getProperty("SQLite.sharedcache"); 63 if (shcache != null && 64 (shcache.startsWith("y") || shcache.startsWith("Y"))) { 65 sharedCache = SQLite.Database._enable_shared_cache(true); 66 } 67 } catch (java.lang.Exception e) { 68 } 69 try { 70 String tvfs = 71 java.lang.System.getProperty("SQLite.vfs"); 72 if (tvfs != null) { 73 vfs = tvfs; 74 } 75 } catch (java.lang.Exception e) { 76 } 77 } catch (java.lang.Exception e) { 78 System.err.println(e); 79 } 80 } 81 JDBCDriver()82 public JDBCDriver() { 83 } 84 acceptsURL(String url)85 public boolean acceptsURL(String url) throws SQLException { 86 return url.startsWith("sqlite:/") || 87 url.startsWith("jdbc:sqlite:/"); 88 } 89 connect(String url, Properties info)90 public Connection connect(String url, Properties info) 91 throws SQLException { 92 if (!acceptsURL(url)) { 93 return null; 94 } 95 Object args[] = new Object[5]; 96 args[0] = url; 97 if (info != null) { 98 args[1] = info.getProperty("encoding"); 99 args[2] = info.getProperty("password"); 100 args[3] = info.getProperty("daterepr"); 101 args[4] = info.getProperty("vfs"); 102 } 103 if (args[1] == null) { 104 args[1] = java.lang.System.getProperty("SQLite.encoding"); 105 } 106 if (args[4] == null) { 107 args[4] = vfs; 108 } 109 try { 110 conn = (Connection) makeConn.newInstance(args); 111 } catch (java.lang.reflect.InvocationTargetException ie) { 112 throw new SQLException(ie.getTargetException().toString()); 113 } catch (java.lang.Exception e) { 114 throw new SQLException(e.toString()); 115 } 116 return conn; 117 } 118 getMajorVersion()119 public int getMajorVersion() { 120 return MAJORVERSION; 121 } 122 getMinorVersion()123 public int getMinorVersion() { 124 return Constants.drv_minor; 125 } 126 getPropertyInfo(String url, Properties info)127 public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) 128 throws SQLException { 129 DriverPropertyInfo p[] = new DriverPropertyInfo[4]; 130 DriverPropertyInfo pp = new DriverPropertyInfo("encoding", ""); 131 p[0] = pp; 132 pp = new DriverPropertyInfo("password", ""); 133 p[1] = pp; 134 pp = new DriverPropertyInfo("daterepr", "normal"); 135 p[2] = pp; 136 pp = new DriverPropertyInfo("vfs", vfs); 137 p[3] = pp; 138 return p; 139 } 140 jdbcCompliant()141 public boolean jdbcCompliant() { 142 return false; 143 } 144 } 145