繁体   English   中英

如何在 Java 中配置数据源以连接到 MS SQL Server?

[英]How do you configure a DataSource in Java to connect to MS SQL Server?

我正在尝试按照 Java 的 JDBC 教程编写一个可以连接到 SQL Server 2008 的 Java 程序。我在建立连接时迷路了。

以下片段来自教程:

InitialContext ic = new InitialContext();
DataSource ds = ic.lookup("java:comp/env/jdbc/myDB");
Connection con = ds.getConnection();
DataSource ds = (DataSource) org.apache.derby.jdbc.ClientDataSource()
ds.setPort(1527);
ds.setHost("localhost");
ds.setUser("APP")
ds.setPassword("APP");
Connection con = ds.getConnection(); 

没有解释 comp/env/jdbc/myDB 应该指向什么,我不知道我应该如何选择端口。 此外,对象 ds 似乎被定义了两次。

我正在使用JSQLDataSource驱动程序作为记录。 任何人都可以指出我正确的方向吗?

http://java.sun.com/docs/books/tutorial/jdbc/basics/connecting.html

我不确定上面有人真的回答了这个问题。

我发现这个微软示例很有用

那里的关键信息实际上是您需要的类是SQLServerDataSource ,它基本上是一个配置对象 - 您可以像这样使用它:

    SQLServerDataSource dataSource = new SQLServerDataSource();
    dataSource.setUser("aUser");
    dataSource.setPassword("password");
    dataSource.setServerName("hostname");
    dataSource.setDatabaseName("db");

然后你会打电话

dataSource.getConnection();

获得一个连接对象,它基本上是你用来与数据库交谈的东西。

采用

connection.prepareStatement("some sql with ? substitutions");

做一些事情来触发 sql 和:

connection.prepareCall

用于调用存储过程。

JDBC 教程Microsoft 文档开始

还有这个:

String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
Class.forName(driver);
String url = "jdbc:microsoft:sqlserver://host:1433/database";
Connection conn = DriverManager.getConnection(url, "username", "password");

填写主机、数据库、用户名和密码的值。 SQL 服务器的默认端口是 1433。

更新:下面的好点。 JDBC 驱动程序可以从 Microsoft 和 jTDS 获得。 我更喜欢后者。

JNDI 查找与支持连接池的 Java EE 应用服务器有关。 您可以要求应用程序服务器创建一个连接池,这可能是一件昂贵的事情,并根据需要将它们借给客户,例如图书馆书籍。

如果您不使用 Java EE 应用程序服务器或连接池,则必须自行创建连接。 这就是手动流程和 DriverManager 的用武之地。

解释:至于为什么 Sun 教程显示 DataSource 两次,我会说这是一个糟糕的编辑案例。 如果您查看代码示例上方的内容,它会说您可以“通过查找或手动”获取数据源。 下面的代码片段同时显示了两者,何时应该是其中之一。

您知道这是一个无意的错误,因为编写的代码无法编译。 你已经声明了两次“ds”。

所以它应该读“...lookup”,然后是它的代码片段,然后是“...手动”,然后是它的代码片段。

我喜欢用于连接 SQL Server 的jTDS驱动程序。

URL 将如下所示:

jdbc:jtds:sqlserver://localhost/Finance;instance=sqlexpress

检查对JTDS地址信息。

也有一些有趣的信息可以帮助解决 jtds 到 sql express 的各种问题。

这个问题很久以前就有答案了。 问了有关 JNDI 查找的问题。 通过查找,您必须查看应用程序服务器日志以查看连接绑定到的内容。 例如在 Jboss 启动中,我可以看到:

[ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=myDB' to JNDI name 'java:myDB'

使用 name=myDB 你查找

InitialContext ic = new InitialContext();
DataSource ds = ic.lookup("java:myDB");

请注意服务器日志和代码如何都指向 JNDI 名称java:myDB

DataSource ds = new SimpleDriverDataSource(new com.mysql.jdbc.Driver(),
    "jdbc:mysql://database:1433;databaseName=name", "username", "password");
JdbcTemplate jdbc = new JdbcTemplate(ds);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM