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