6

必要なデータベースに接続するには。ConnectionPoolDataSourceクラスを使用する予定です。しかし、このインスタンスを使用してデータベース名(接続先)に関する詳細を設定するにはどうすればよいですか? この機会にお役立てください。

4

2 に答える 2

11

このドキュメントとを読んでみてください

編集

上記のリンクの例を変更しただけです

準備された手順: - MySQL サーバーを ダウンロードする - mySQL Java ドライバーを ダウンロードする - Apache Commons Poolをダウンロードする - Commons DBCP を ダウンロードする - MySQL Workbench のような MySQL クライアントを開き、次のスクリプトを使用して DB を作成する

delimiter $$

CREATE DATABASE `test_stackoverflow` /*!40100 DEFAULT CHARACTER SET utf8 */$$

delimiter $$

CREATE TABLE `test_table` (
  `idtest_table` int(11) NOT NULL,
  `test_field` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`idtest_table`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$

INSERT INTO `test_stackoverflow`.`test_table` (`idtest_table`, `test_field`) VALUES (1, 'test1');
INSERT INTO `test_stackoverflow`.`test_table` (`idtest_table`, `test_field`) VALUES (2, 'test2');
  • Java プロジェクトを作成し、クラス パス、myscl コネクタ、プール、および dbcp に追加します (これらすべての jar をダウンロードするだけです)。

次のクラスを追加

import org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS;
import org.apache.commons.dbcp.datasources.SharedPoolDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

/**
 * @author Sergii.Zagriichuk
 */
public class Pool {
    private static DataSource ds;

    static {
        DriverAdapterCPDS cpds = new DriverAdapterCPDS();
        try {
            cpds.setDriver("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        cpds.setUrl("jdbc:mysql://localhost:3306/test_stackoverflow");
        cpds.setUser("root");
        cpds.setPassword("root");

        SharedPoolDataSource tds = new SharedPoolDataSource();
        tds.setConnectionPoolDataSource(cpds);
        tds.setMaxActive(10);
        tds.setMaxWait(50);

        ds = tds;
    }

    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
}

ユーザー名とパスを db ユーザー/パスワードに変更する必要があります

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class MainClass {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            connection = Pool.getConnection();
            // Do work with connection
            statement = connection.createStatement();
            String selectEmployeesSQL = "select * from test_table";
            resultSet = statement.executeQuery(selectEmployeesSQL);

            while (resultSet.next()) {
                printTestTable(resultSet);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                } // nothing we can do
            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                } // nothing we can do
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                } // nothing we can do
            }
        }
    }

    private static void printTestTable(ResultSet resultSet) throws SQLException {
        System.out.print(resultSet.getInt("idtest_table")+", ");
        System.out.print(resultSet.getString("test_field"));
    }

}

main メソッドを実行するだけで、出力されたテスト値がコンソールに表示されます!!!

于 2012-06-11T20:57:10.940 に答える
1

のインスタンスを使用できますDriverAdapterCPDSこれには、 ApacheCommonsPoolApacheCommonsDBCPの2つのライブラリを追加する必要があります。使用するドライバーに接続プールの実装が含まれていない場合に非常に役立ちます。

http://massapi.com/class/dr/DriverAdapterCPDS.htmlに例があります。

于 2012-06-11T21:04:10.167 に答える