当前位置: 首页 > 面试题库 >

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

宇文俊明
2023-03-14
问题内容

我正在尝试在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();

该代码无法编译,因为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)给出一个示例,说明任何数据库的教程代码 应该 是什么。


问题答案:

基本上,在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驱动程序没有,因此,如果您不确定,注册第二个驱动程序几乎没有什么害处,它只是在内存中创建一个重复的对象。



 类似资料:
  • 我正在尝试使用Spring数据的审核功能(与Spring Boot和Spring数据Rest结合使用),但审核字段没有设置在save上。所有保存操作都会导致试图保存空“创建人”的约束异常 根据spring数据文档,我应该能够在实体上放置适当的审计注释(@CreatedDate/etc),并制作一个AuditorAware 我的问题是: 1)我是否有必要创建一个AuditingEntityListe

  • 我有我的巴蒂斯 xml config 我有依赖关系 我有存储库 但是当我尝试构建priject时,我出错了。 描述: 无法确定数据库类型 NONE 的嵌入式数据库驱动程序类 行动: 如果你想要一个嵌入式数据库,请在类路径上放置一个受支持的数据库。如果要从特定配置文件加载数据库设置,则可能需要激活它(当前没有配置文件处于活动状态)。 我怎么设置SqlMapConfig.xml? 我尝试在行中写入 但

  • 问题内容: 我有一个具有ImageField的模型。如何手动为其分配图像文件?我希望它像对待其他任何上传的文件一样对待它… 问题答案: 请参阅django.core.files.File的django文档 其中fd是打开文件对象:

  • 在建造中。我有:

  • 我在pom中添加了spring jpa启动器依赖项,然后将其删除。但spring现在继续对数据源执行自动配置,所以应用程序不会启动。 怎么摆脱这个? 一种解决方案是在应用程序类中具有以下注释: 我想不这样做就实现它。