Enr*_*que 12 java database jdbc
我提出了以下实用程序类:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySqlConnection
{
private static String dbUrl = "jdbc:mysql://localhost:3306/database";
private static String dbUsername = "root";
private static String dbPassword = "mysql";
public static Connection getConnection()
{
Connection connection = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
} catch (ClassNotFoundException e) {
System.out.println("Could not load JDBC driver: " + e.getMessage());
} catch (SQLException e) {
System.out.println("Could not connect to DB: " + e.getMessage());
}
return connection;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是:我不想从我的方法返回null,因为通过这样做,我强制我的调用者if (connection != null) {...}每次打开时都要进行检查并想要使用连接.我发现这些空检查容易出错,并且不惜一切代价避免它们.我可以遵循哪种方法来管理我的应用程序中的数据库连接?
首先,从JDBC 4.0/Java 6开始,Class.forName()不再需要调用.
(参见Class.forName()必要的)
接下来,不要埋没异常.将它们扔到堆栈中,让调用者决定应该如何处理异常.根据getConnection()被调用的时间,您可能希望:
我的观点是,不要害怕将异常抛出堆栈并让调用者适当地处理异常.
总而言之,您的getConnection()方法应该只需要存储您的数据库URL,用户名和密码.
public class MySqlConnection
{
private static String dbUrl = "jdbc:mysql://localhost:3306/database";
private static String dbUsername = "root";
private static String dbPassword = "mysql";
public static Connection getConnection() throws SQLException
{
return DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,getConnection()很少会抛出SQLException.我唯一的情景曾经见过它抛出SQLException是因为凭据不正确或数据库下跌.
| 归档时间: |
|
| 查看次数: |
7489 次 |
| 最近记录: |