7

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 が 2 回定義されているようです。

JSQLDataSource記録のために、ドライバーを使用しています。ここで誰かが私を正しい方向に向けることができますか?

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

4

5 に答える 5

13

上記の誰かが本当に質問に答えたかどうかはわかりません。

このマイクロソフトのサンプルは役に立ちました。

そこにある重要な情報は、必要なクラスは基本的に構成オブジェクトである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

ストアド プロシージャを呼び出すため。

于 2014-05-12T15:53:01.680 に答える
11

JDBC チュートリアルまたはMicrosoft docsから始めます。

この:

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 が 2 回表示される理由については、編集が不十分な場合だと思います。上記のコード サンプルを見ると、「ルックアップまたは手動で」DataSource を取得できることが示されています。以下のコード スニペットは、どちらか一方でなければならない場合に、両方を一緒に示しています。

記述されたコードをコンパイルする方法がないため、不注意によるエラーであることがわかります。「ds」が 2 回宣言されています。

そのため、"...lookup" の後にコード スニペットが続き、"...manually" の後にコード スニペットが続く必要があります。

于 2009-07-03T18:10:57.493 に答える
4

SQL Server に接続するため のjTDSドライバーが気に入っています。

URL は次のようになります。

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

jTDS URL 情報については、これを確認してください。

これには、jtds to sql express の種類の問題のトラブルシューティングに役立つ興味深い情報も含まれています。

于 2009-07-03T18:12:06.417 に答える
1

この質問は、ずっと前にすでに回答されています。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を指していることに注意してください。

于 2013-03-20T23:48:12.833 に答える