Eri*_*son 43 java datasource jdbc
我正在尝试在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();
Run Code Online (Sandbox Code Playgroud)
此代码无法编译,因为DataSource除了getConnection()上次调用的方法之外,接口没有这些方法.
(这是javadoc:http: //java.sun.com/javase/6/docs/api/javax/sql/DataSource.html)
我错过了什么?
编辑:
我实际上是在尝试连接MySQL(com.mysql.jdbc)而我找不到javadoc.我会接受一个指向我的答案:
1)com.mysql.jdbc关于DataSource我能理解的文件,或者
2)为任何数据库提供了教程代码应该遵循的示例.
Col*_*inD 127
您可能想要了解的一件事是Commons DBCP项目.它提供了一个BasicDataSource,其配置与您的示例非常相似.要使用它,您需要在类路径中使用数据库供应商的JDBC JAR,并且必须以正确的格式指定供应商的驱动程序类名称和数据库URL.
编辑:
如果你想配置一个BasicDataSourcefor MySQL,你会做这样的事情:
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUsername("username");
dataSource.setPassword("password");
dataSource.setUrl("jdbc:mysql://<host>:<port>/<database>");
dataSource.setMaxActive(10);
dataSource.setMaxIdle(5);
dataSource.setInitialSize(5);
dataSource.setValidationQuery("SELECT 1");
Run Code Online (Sandbox Code Playgroud)
DataSource然后需要的代码可以使用它.
Yis*_*hai 21
基本上在JDBC中,大多数这些属性在API中都不可配置,而是依赖于实现.JDBC处理此问题的方法是允许每个供应商的连接URL不同.
所以你要做的就是注册驱动程序,以便JDBC系统知道如何处理URL:
DriverManager.registerDriver((Driver) Class.forName("com.mysql.jdbc.Driver").newInstance());
Run Code Online (Sandbox Code Playgroud)
然后你形成URL:
String url = "jdbc:mysql://[host][,failoverhost...][:port]/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]"
Run Code Online (Sandbox Code Playgroud)
最后,用它来建立连接:
Connection c = DriverManager.getConnection(url);
Run Code Online (Sandbox Code Playgroud)
在更复杂的JDBC中,您涉及连接池等,应用程序服务器通常有自己的方式在JNDI中注册驱动程序,并从那里查找DataSource,并在其上调用getConnection.
关于MySQL支持的属性,请参见此处.
编辑:还有一个想法,技术上只是有一行代码Class.forName("com.mysql.jdbc.Driver")应该是足够的,因为类应该有自己的静态初始化程序,它注册一个版本,但有时一个JDBC驱动程序没有,所以如果你不确定,注册第二个没有什么害处,它只是在memeory中创建一个重复的对象.
小智 20
DataSource是特定于供应商的,对于MySql,您可以使用MySql Java连接器jar中提供的MysqlDataSource:
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setDatabaseName("xyz");
dataSource.setUser("xyz");
dataSource.setPassword("xyz");
dataSource.setServerName("xyz.yourdomain.com");
Run Code Online (Sandbox Code Playgroud)
小智 6
以 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;
}
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
110550 次 |
| 最近记录: |