必要なデータベースに接続するには。ConnectionPoolDataSourceクラスを使用する予定です。しかし、このインスタンスを使用してデータベース名(接続先)に関する詳細を設定するにはどうすればよいですか? この機会にお役立てください。
user1449658
質問する
7561 次
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
。これには、 ApacheCommonsPoolとApacheCommonsDBCPの2つのライブラリを追加する必要があります。使用するドライバーに接続プールの実装が含まれていない場合に非常に役立ちます。
于 2012-06-11T21:04:10.167 に答える