All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sf.database.datasource.SimpleDataSource Maven / Gradle / Ivy

The newest version!
package sf.database.datasource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.sql.DataSource;
import java.io.Closeable;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

/**
 * 这是一个神奇的DataSource!!你甚至不需要设置driverClassName!!
 * 

把用户名,密码,jdbcURL设置一下,这个类就能用了!! *

当然,你在你的 CLASSPATH 下要放置相应的数据库驱动 jar 包 * @author */ public class SimpleDataSource implements DataSource, Closeable { private static final Logger log = LoggerFactory.getLogger(SimpleDataSource.class); protected String username; protected String password; protected String driverClassName; protected String jdbcUrl; public SimpleDataSource() { log.warn("SimpleDataSource is NOT a Connection Pool, So it is slow but safe for debug/study"); } /** * 这是唯一会被NutDao调用的方法 */ public Connection getConnection() throws SQLException { Connection conn; if (username != null) conn = DriverManager.getConnection(jdbcUrl, username, password); else conn = DriverManager.getConnection(jdbcUrl); return conn; } public void close() { } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } public void setJdbcUrl(String jdbcUrl) { this.jdbcUrl = jdbcUrl; } public void setUrl(String url) { this.jdbcUrl = url; } public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; if (driverClassName != null) { try { Class.forName(driverClassName); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } } //加载所有支持的数据库的驱动!! static { String[] drivers = {"org.h2.Driver", "com.ibm.db2.jcc.DB2Driver", "org.hsqldb.jdbcDriver", "oracle.jdbc.OracleDriver", "org.postgresql.Driver", "net.sourceforge.jtds.jdbc.Driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "org.sqlite.JDBC", "com.mysql.jdbc.Driver", "com.mysql.cj.jdbc.Driver", "com.beyondb.jdbc.BeyondbDriver", "ru.yandex.clickhouse.ClickHouseDriver", "com.github.housepower.jdbc.ClickHouseDriver", "cc.blynk.clickhouse.ClickHouseDriver"}; for (String driverClassName : drivers) { try { Class.forName(driverClassName); } catch (Throwable e) { } } } //--------------------------------------------------------------- public PrintWriter getLogWriter() throws SQLException { throw new UnsupportedOperationException(); } public void setLogWriter(PrintWriter out) throws SQLException { throw new UnsupportedOperationException(); } public void setLoginTimeout(int seconds) throws SQLException { throw new UnsupportedOperationException(); } public int getLoginTimeout() throws SQLException { throw new UnsupportedOperationException(); } public T unwrap(Class iface) throws SQLException { throw new UnsupportedOperationException(); } public boolean isWrapperFor(Class iface) throws SQLException { throw new UnsupportedOperationException(); } public Connection getConnection(String username, String password) throws SQLException { throw new UnsupportedOperationException(); } public java.util.logging.Logger getParentLogger() { throw new UnsupportedOperationException(); } public static DataSource createDataSource(Properties props) { SimpleDataSource sds = new SimpleDataSource(); sds.setJdbcUrl(props.getProperty("url", props.getProperty("jdbcUrl"))); sds.setPassword(props.getProperty("password")); sds.setUsername(props.getProperty("username")); return sds; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy