mirror of
https://github.com/berkeleydb/libdb.git
synced 2024-11-17 01:26:25 +00:00
147 lines
3.9 KiB
Java
147 lines
3.9 KiB
Java
|
package SQLite;
|
||
|
|
||
|
import java.sql.Connection;
|
||
|
import java.sql.DriverPropertyInfo;
|
||
|
import java.sql.SQLException;
|
||
|
import java.util.Properties;
|
||
|
|
||
|
public class JDBCDriver implements java.sql.Driver {
|
||
|
|
||
|
public static final int MAJORVERSION = 1;
|
||
|
|
||
|
public static boolean sharedCache = false;
|
||
|
|
||
|
public static String vfs = null;
|
||
|
|
||
|
private static java.lang.reflect.Constructor makeConn = null;
|
||
|
|
||
|
protected Connection conn;
|
||
|
|
||
|
static {
|
||
|
try {
|
||
|
Class connClass = null;
|
||
|
Class args[] = new Class[5];
|
||
|
args[0] = Class.forName("java.lang.String");
|
||
|
args[1] = args[0];
|
||
|
args[2] = args[0];
|
||
|
args[3] = args[0];
|
||
|
args[4] = args[0];
|
||
|
String jvers = java.lang.System.getProperty("java.version");
|
||
|
String cvers;
|
||
|
if (jvers == null || jvers.startsWith("1.0")) {
|
||
|
throw new java.lang.Exception("unsupported java version " + jvers);
|
||
|
} else if (jvers.startsWith("1.1")) {
|
||
|
cvers = "SQLite.JDBC1.JDBCConnection";
|
||
|
} else if (jvers.startsWith("1.2") || jvers.startsWith("1.3")) {
|
||
|
cvers = "SQLite.JDBC2.JDBCConnection";
|
||
|
} else if (jvers.startsWith("1.4")) {
|
||
|
cvers = "SQLite.JDBC2x.JDBCConnection";
|
||
|
} else if (jvers.startsWith("1.5")) {
|
||
|
cvers = "SQLite.JDBC2y.JDBCConnection";
|
||
|
try {
|
||
|
Class.forName(cvers);
|
||
|
} catch (java.lang.Exception e) {
|
||
|
cvers = "SQLite.JDBC2x.JDBCConnection";
|
||
|
}
|
||
|
} else {
|
||
|
cvers = "SQLite.JDBC2z.JDBCConnection";
|
||
|
try {
|
||
|
Class.forName(cvers);
|
||
|
} catch (java.lang.Exception e) {
|
||
|
cvers = "SQLite.JDBC2y.JDBCConnection";
|
||
|
try {
|
||
|
Class.forName(cvers);
|
||
|
} catch (java.lang.Exception ee) {
|
||
|
cvers = "SQLite.JDBC2x.JDBCConnection";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
connClass = Class.forName(cvers);
|
||
|
makeConn = connClass.getConstructor(args);
|
||
|
java.sql.DriverManager.registerDriver(new JDBCDriver());
|
||
|
try {
|
||
|
String shcache =
|
||
|
java.lang.System.getProperty("SQLite.sharedcache");
|
||
|
if (shcache != null &&
|
||
|
(shcache.startsWith("y") || shcache.startsWith("Y"))) {
|
||
|
sharedCache = SQLite.Database._enable_shared_cache(true);
|
||
|
}
|
||
|
} catch (java.lang.Exception e) {
|
||
|
}
|
||
|
try {
|
||
|
String tvfs =
|
||
|
java.lang.System.getProperty("SQLite.vfs");
|
||
|
if (tvfs != null) {
|
||
|
vfs = tvfs;
|
||
|
}
|
||
|
} catch (java.lang.Exception e) {
|
||
|
}
|
||
|
} catch (java.lang.Exception e) {
|
||
|
System.err.println(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public JDBCDriver() {
|
||
|
}
|
||
|
|
||
|
public boolean acceptsURL(String url) throws SQLException {
|
||
|
return url.startsWith("sqlite:/") ||
|
||
|
url.startsWith("jdbc:sqlite:/");
|
||
|
}
|
||
|
|
||
|
public Connection connect(String url, Properties info)
|
||
|
throws SQLException {
|
||
|
if (!acceptsURL(url)) {
|
||
|
return null;
|
||
|
}
|
||
|
Object args[] = new Object[5];
|
||
|
args[0] = url;
|
||
|
if (info != null) {
|
||
|
args[1] = info.getProperty("encoding");
|
||
|
args[2] = info.getProperty("password");
|
||
|
args[3] = info.getProperty("daterepr");
|
||
|
args[4] = info.getProperty("vfs");
|
||
|
}
|
||
|
if (args[1] == null) {
|
||
|
args[1] = java.lang.System.getProperty("SQLite.encoding");
|
||
|
}
|
||
|
if (args[4] == null) {
|
||
|
args[4] = vfs;
|
||
|
}
|
||
|
try {
|
||
|
conn = (Connection) makeConn.newInstance(args);
|
||
|
} catch (java.lang.reflect.InvocationTargetException ie) {
|
||
|
throw new SQLException(ie.getTargetException().toString());
|
||
|
} catch (java.lang.Exception e) {
|
||
|
throw new SQLException(e.toString());
|
||
|
}
|
||
|
return conn;
|
||
|
}
|
||
|
|
||
|
public int getMajorVersion() {
|
||
|
return MAJORVERSION;
|
||
|
}
|
||
|
|
||
|
public int getMinorVersion() {
|
||
|
return Constants.drv_minor;
|
||
|
}
|
||
|
|
||
|
public DriverPropertyInfo[] getPropertyInfo(String url, Properties info)
|
||
|
throws SQLException {
|
||
|
DriverPropertyInfo p[] = new DriverPropertyInfo[4];
|
||
|
DriverPropertyInfo pp = new DriverPropertyInfo("encoding", "");
|
||
|
p[0] = pp;
|
||
|
pp = new DriverPropertyInfo("password", "");
|
||
|
p[1] = pp;
|
||
|
pp = new DriverPropertyInfo("daterepr", "normal");
|
||
|
p[2] = pp;
|
||
|
pp = new DriverPropertyInfo("vfs", vfs);
|
||
|
p[3] = pp;
|
||
|
return p;
|
||
|
}
|
||
|
|
||
|
public boolean jdbcCompliant() {
|
||
|
return false;
|
||
|
}
|
||
|
}
|