mysql如何手动配置_jdbc-如何在Java中手动配置数据源?

jdbc-如何在Java中手动配置数据源?

我正尝试在[http://java.sun.com/docs/books/tutorial/jdbc/basics/connecting.html]上遵循Sun的JDBC教程。

它提供了以下示例代码:

DataSource ds = (DataSource) org.apache.derby.jdbc.ClientDataSource()

ds.setPort(1527);

ds.setHost("localhost");

ds.setUser("APP")

ds.setPassword("APP");

Connection con = ds.getConnection();

由于com.mysql.jdbc接口除了最后调用的DataSource方法之外,没有任何方法,因此不会编译此代码。

(以下是Javadoc:[http://java.sun.com/javase/6/docs/api/javax/sql/DataSource.html)]

我想念什么?

编辑:我实际上正在尝试连接到MySQL(com.mysql.jdbc),但找不到该Javadoc。 我会接受一个答案,指出我要么:

1)我能理解的有关DataSource的com.mysql.jdbc的文档,或者

2)给出一个示例,说明任何数据库的教程代码应该是什么。

6个解决方案

126 votes

您可能要看的一件事是Commons DBCP项目。 它提供了一个BasicDataSource,其配置与您的示例非常相似。 要使用它,您需要在类路径中使用数据库供应商的JDBC JAR,并且必须以正确的格式指定供应商的驱动程序类名称和数据库URL。

编辑:

如果要为MySQL配置DataSource,则应执行以下操作:

BasicDataSource dataSource = new BasicDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

dataSource.setUsername("username");

dataSource.setPassword("password");

dataSource.setUrl("jdbc:mysql://:/");

dataSource.setMaxActive(10);

dataSource.setMaxIdle(5);

dataSource.setInitialSize(5);

dataSource.setValidationQuery("SELECT 1");

然后,需要DataSource的代码可以使用它。

ColinD answered 2020-07-27T16:07:25Z

21 votes

基本上,在JDBC中,大多数此类属性都无法像这样在API中进行配置,而是取决于实现。 JDBC处理此问题的方法是允许每个供应商的连接URL都不同。

因此,您要做的是注册驱动程序,以便JDBC系统可以知道如何处理URL:

DriverManager.registerDriver((Driver) Class.forName("com.mysql.jdbc.Driver").newInstance());

然后形成URL:

String url = "jdbc:mysql://[host][,failoverhost...][:port]/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]"

最后,使用它来获得连接:

Connection c = DriverManager.getConnection(url);

在更复杂的JDBC中,您会涉及到连接池等,并且应用程序服务器通常具有自己的在JNDI中注册驱动程序的方式,并且您从那里查找数据源,然后在其上调用getConnection。

关于MySQL支持的属性,请参见此处。

编辑:再想一想,从技术上讲,只要有一行代码做Class.forName(“ com.mysql.jdbc.Driver”)就足够了,因为该类应该有自己的静态初始化器,该初始化器注册一个版本,但有时 JDBC驱动程序没有,因此,如果您不确定,注册第二个驱动程序几乎没有什么害处,它只是在内存中创建一个重复的对象。

Yishai answered 2020-07-27T16:06:51Z

20 votes

DataSource是特定于供应商的,对于MySql,您可以使用MySql Java连接器jar中提供的MysqlDataSource:

MysqlDataSource dataSource = new MysqlDataSource();

dataSource.setDatabaseName("xyz");

dataSource.setUser("xyz");

dataSource.setPassword("xyz");

dataSource.setServerName("xyz.yourdomain.com");

Luke answered 2020-07-27T16:07:45Z

3 votes

以MYSQL为例:1)使用数据库连接池:例如:Apache Commons DBCP,此外,您在类路径中需要basicDataSource jar包

@Bean

public BasicDataSource dataSource() {

BasicDataSource ds = new BasicDataSource();

ds.setDriverClassName("com.mysql.jdbc.Driver");

ds.setUrl("jdbc:mysql://localhost:3306/gene");

ds.setUsername("root");

ds.setPassword("root");

return ds;

}

2)使用基于JDBC的驱动程序,如果您不考虑连接池,通常会使用它:

@Bean

public DataSource dataSource(){

DriverManagerDataSource ds = new DriverManagerDataSource();

ds.setDriverClassName("com.mysql.jdbc.Driver");

ds.setUrl("jdbc:mysql://localhost:3306/gene");

ds.setUsername("root");

ds.setPassword("root");

return ds;

}

Fujian lin answered 2020-07-27T16:08:10Z

2 votes

我认为该示例是错误的-DataSource也没有这些属性。 您的DataSource必须为org.apache.derby.jdbc.ClientDataSource类型,该类型应具有这些属性。

Vinay Sajip answered 2020-07-27T16:08:30Z

1 votes

您所引用的DataSource的Javadoc的软件包错误。 您应该查看javax.sql.DataSource。 如您所见,这是一个接口。 主机名和端口名的配置取决于实现方式,即所使用的JDBC驱动程序。

我没有检查过Derby javadocs,但我想代码应该像这样编译:

ClientDataSource ds = org.apache.derby.jdbc.ClientDataSource()

ds.setHost etc....

Kees de Kooter answered 2020-07-27T16:08:54Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值