Rumah >pangkalan data >tutorial mysql >Adakah Sambungan JDBC Saya Sebenarnya Menggunakan Kolam?
Pengumpulan Sambungan JDBC: Mengesahkan Pelaksanaan
Menentukan sama ada anda menggunakan pengumpulan sambungan JDBC boleh mengelirukan kerana kesederhanaannya yang dikatakan. Mari kita mendalami kelas sambungan yang disediakan dan penggunaan untuk memastikan sama ada pengumpulan sambungan benar sedang digunakan.
Analisis Kelas Sambungan
Kelas sambungan yang disediakan nampaknya menggunakan SumberData Asas DBCP untuk pengurusan sambungan. Walau bagaimanapun, pemeriksaan lebih dekat mendedahkan bahawa kumpulan sambungan baharu sedang diwujudkan pada setiap pemerolehan sambungan. Ini menafikan konsep asas pengumpulan sambungan, kerana sambungan harus diambil daripada kumpulan kongsi tunggal.
Selain itu, memegang sambungan sebagai pembolehubah tika adalah tidak disyorkan. Sambungan hendaklah diperolehi mengikut keperluan dan ditutup dengan betul untuk menuntut semula sumber dengan berkesan.
Petikan Kod Ditulis Semula
Untuk membetulkan isu ini, berikut ialah kelas sambungan yang disemak semula:
public final class Database { private static final BasicDataSource dataSource = new BasicDataSource(); static { dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/data"); dataSource.setUsername("USERNAME"); dataSource.setPassword("PASSWORD"); } private Database() { // } public static Connection getConnection() throws SQLException { return dataSource.getConnection(); } }
Kod ini mencipta kumpulan sambungan sekali dan menyediakan cara untuk mendapatkan sambungan daripada ia.
Penggunaan Sambungan yang Disemak
Begini cara anda menggunakan kelas sambungan dan fungsi JDBC dengan cara yang lebih mantap:
private static final String SQL_EXIST = "SELECT * FROM users WHERE username=? AND password=?"; public boolean exist(User user) throws SQLException { boolean exist = false; try ( Connection connection = Database.getConnection(); PreparedStatement statement = connection.prepareStatement(SQL_EXIST); ) { statement.setString(1, user.getUsername()); statement.setString(2, user.getPassword()); try (ResultSet resultSet = preparedStatement.executeQuery()) { exist = resultSet.next(); } } return exist; }
Ini kod yang disemak menggunakan blok cuba-dengan-sumber untuk memastikan pelepasan sambungan dan sumber lain yang betul.
Atas ialah kandungan terperinci Adakah Sambungan JDBC Saya Sebenarnya Menggunakan Kolam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!