mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
SqlStat添加DbType字段
git-svn-id: http://code.alibabatech.com/svn/druid/trunk@183 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
@@ -130,6 +130,12 @@ public abstract class DruidAbstractDataSource implements DataSource, DataSourceP
|
||||
|
||||
protected List<String> connectionInitSqls;
|
||||
|
||||
protected String dbType;
|
||||
|
||||
public String getDbType() {
|
||||
return dbType;
|
||||
}
|
||||
|
||||
public void addConnectionProperty(String name, String value) {
|
||||
if (inited) {
|
||||
throw new UnsupportedOperationException();
|
||||
@@ -653,7 +659,7 @@ public abstract class DruidAbstractDataSource implements DataSource, DataSourceP
|
||||
} catch (InvocationTargetException e) {
|
||||
throw new SQLException("passwordCallback Error", e);
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
Method method = passwordCallback.getClass().getMethod("setProperties", Properties.class);
|
||||
method.invoke(passwordCallback, properties);
|
||||
|
||||
@@ -110,6 +110,8 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
|
||||
if (this.driverClass == null || this.driverClass.isEmpty()) {
|
||||
this.driverClass = JdbcUtils.getDriverClassName(this.jdbcUrl);
|
||||
}
|
||||
|
||||
this.dbType = JdbcUtils.getDbType(jdbcUrl, driverClass.getClass().getName());
|
||||
|
||||
try {
|
||||
driver = (Driver) Class.forName(this.driverClass).newInstance();
|
||||
|
||||
@@ -26,6 +26,8 @@ import com.alibaba.druid.filter.Filter;
|
||||
public interface DataSourceProxy {
|
||||
|
||||
String getName();
|
||||
|
||||
String getDbType();
|
||||
|
||||
Driver getRawDriver();
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ import javax.security.auth.callback.PasswordCallback;
|
||||
import com.alibaba.druid.filter.Filter;
|
||||
import com.alibaba.druid.filter.FilterChain;
|
||||
import com.alibaba.druid.filter.FilterChainImpl;
|
||||
import com.alibaba.druid.util.JdbcUtils;
|
||||
|
||||
/**
|
||||
* @author wenshao<szujobs@hotmail.com>
|
||||
@@ -52,10 +53,17 @@ public class DataSourceProxyImpl implements DataSourceProxy, DataSourceProxyImpl
|
||||
|
||||
private Properties properties;
|
||||
|
||||
private String dbType;
|
||||
|
||||
public DataSourceProxyImpl(Driver rawDriver, DataSourceProxyConfig config){
|
||||
super();
|
||||
this.rawDriver = rawDriver;
|
||||
this.config = config;
|
||||
this.dbType = JdbcUtils.getDbType(config.getRawUrl(), config.getRawDriverClassName());
|
||||
}
|
||||
|
||||
public String getDbType() {
|
||||
return dbType;
|
||||
}
|
||||
|
||||
public Driver getRawDriver() {
|
||||
|
||||
@@ -61,6 +61,10 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
|
||||
private final AtomicLong updateCount = new AtomicLong();
|
||||
private final AtomicLong fetchRowCount = new AtomicLong();
|
||||
|
||||
public JdbcSqlStat(String sql){
|
||||
this.sql = sql;
|
||||
}
|
||||
|
||||
public String getDbType() {
|
||||
return dbType;
|
||||
}
|
||||
@@ -117,10 +121,6 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
|
||||
context.setFile(val);
|
||||
}
|
||||
|
||||
public JdbcSqlStat(String sql){
|
||||
this.sql = sql;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@@ -422,4 +422,66 @@ public final class JdbcUtils {
|
||||
throw new SQLException("unkow jdbc driver : " + rawUrl);
|
||||
}
|
||||
}
|
||||
|
||||
public static String getDbType(String rawUrl, String driverClassName) {
|
||||
if (rawUrl == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (rawUrl.startsWith("jdbc:derby:")) {
|
||||
return "derby";
|
||||
} else if (rawUrl.startsWith("jdbc:mysql:")) {
|
||||
return "mysql";
|
||||
} else if (rawUrl.startsWith("jdbc:oracle:")) {
|
||||
return "oracle";
|
||||
} else if (rawUrl.startsWith("jdbc:microsoft:")) {
|
||||
return "sqlserver";
|
||||
} else if (rawUrl.startsWith("jdbc:sybase:Tds:")) {
|
||||
return "sybase";
|
||||
} else if (rawUrl.startsWith("jdbc:jtds:")) {
|
||||
return "jtds";
|
||||
} else if (rawUrl.startsWith("jdbc:fake:") || rawUrl.startsWith("jdbc:mock:")) {
|
||||
return "mock";
|
||||
} else if (rawUrl.startsWith("jdbc:postgresql:")) {
|
||||
return "postgresql";
|
||||
} else if (rawUrl.startsWith("jdbc:hsqldb:")) {
|
||||
return "hsql";
|
||||
} else if (rawUrl.startsWith("jdbc:db2:")) {
|
||||
return "db2";
|
||||
} else if (rawUrl.startsWith("jdbc:sqlite:")) {
|
||||
return "sqlite";
|
||||
} else if (rawUrl.startsWith("jdbc:ingres:")) {
|
||||
return "ingres";
|
||||
} else if (rawUrl.startsWith("jdbc:h2:")) {
|
||||
return "h2";
|
||||
} else if (rawUrl.startsWith("jdbc:mckoi:")) {
|
||||
return "mckoi";
|
||||
} else if (rawUrl.startsWith("jdbc:cloudscape:")) {
|
||||
return "cloudscape";
|
||||
} else if (rawUrl.startsWith("jdbc:informix-sqli:")) {
|
||||
return "informix";
|
||||
} else if (rawUrl.startsWith("jdbc:timesten:")) {
|
||||
return "timesten";
|
||||
} else if (rawUrl.startsWith("jdbc:as400:")) {
|
||||
return "as400";
|
||||
} else if (rawUrl.startsWith("jdbc:sapdb:")) {
|
||||
return "sapdb";
|
||||
} else if (rawUrl.startsWith("jdbc:JSQLConnect:")) {
|
||||
return "JSQLConnect";
|
||||
} else if (rawUrl.startsWith("jdbc:JTurbo:")) {
|
||||
return "JTurbo";
|
||||
} else if (rawUrl.startsWith("jdbc:firebirdsql:")) {
|
||||
return "firebirdsql";
|
||||
} else if (rawUrl.startsWith("jdbc:interbase:")) {
|
||||
return "interbase";
|
||||
} else if (rawUrl.startsWith("jdbc:pointbase:")) {
|
||||
return "pointbase";
|
||||
} else if (rawUrl.startsWith("jdbc:edbc:")) {
|
||||
return "edbc";
|
||||
} else if (rawUrl.startsWith("jdbc:mimer:multi1:")) {
|
||||
return "mimer";
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user