public Connection getConn() { try { String d = new Date().toLocaleString().substring(0, 9); Class.forName("com.mysql.jdbc.Driver"); String dburl = (String) config.get("dburl"); conn = DriverManager.getConnection(dburl, "root", "123456"); } catch (Exception e) { e.printStackTrace(); } return conn; }
时间: 2024-04-28 07:21:30 浏览: 62
这段代码看起来是获取数据库连接的方法,使用了JDBC连接数据库。其中使用了MySQL的JDBC驱动程序,连接字符串从配置文件中读取。同时,连接的用户名为"root",密码为"123456"。该方法返回获取到的数据库连接对象。不过,这段代码并不够安全,用户名和密码应该从加密的配置文件中读取,并且应该使用连接池技术来保证连接的有效性和避免资源浪费。
相关问题
public Visitor findById(int id) { Visitor visitor = null; String sql = "SELECT * FROM blacklist WHERE id = ?"; try { conn = JDBCUtils.getConn(); ps = conn.prepareStatement(sql); ps.setInt(1, id); rs = ps.executeQuery(); if (rs.next()) { int pid = rs.getInt("id"); String name = rs.getString("name"); String phone = rs.getString("phone"); String reason = rs.getString("reason"); //System.out.println(pid + name + phone); visitor = new Visitor(pid, name, phone, reason); } }catch(SQLException e) { e.printStackTrace(); }finally { JDBCUtils.close(conn, ps, rs); } return visitor; } 详细解释这段代码的意思
这段代码是一个 Java 方法,其名称为 "findById",接受一个整型参数 "id"。该方法根据给定的 "id" 在数据库的黑名单表中查找访客信息,并返回一个 Visitor 对象。
首先,代码定义一个 Visitor 对象并将其初始化为 null。然后,创建一个 SQL 语句,用于从黑名单表中查找指定 "id" 的访客信息。接下来,代码获取一个数据库连接对象,并使用 PreparedStatement 对象将 SQL 语句与 "id" 绑定。通过调用 PreparedStatement 对象的 setInt 方法设置 SQL 语句中的参数。
然后,代码执行 SQL 语句并返回一个结果集对象。如果结果集中存在数据,则将结果集中的访客信息取出并使用这些信息创建一个新的 Visitor 对象。最后,代码关闭数据库连接和 PreparedStatement 对象,并返回 Visitor 对象。
如果在执行 SQL 语句的过程中出现异常,则打印异常的堆栈信息。无论是否发生异常,代码都会确保数据库连接和 PreparedStatement 对象得到关闭。
为下面代码添加注释 public class JdbcUtils { static LinkedList<Connection> pool=new LinkedList<>(); static { Properties properties=new Properties(); try { properties.load(new FileReader("db.properties")); } catch (IOException e) { e.printStackTrace(); } String num_ = (String) properties.get("init"); int num=Integer.parseInt(num_); for (int i = 0; i <num ; i++) { Connection connection=null; try { Class.forName((String) properties.get("driverName")); connection = DriverManager.getConnection((String) properties.get("url"), (String) properties.get("user"),(String) properties.get("pwd")); pool.add(connection); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } } } public static Connection getConn(){ return pool.removeLast(); } public static void back(Connection connection){ pool.addFirst(connection); } }
/**
* JdbcUtils工具类实现数据库连接池
*/
public class JdbcUtils {
// 创建一个LinkedList对象作为连接池
static LinkedList<Connection> pool=new LinkedList<>();
// 静态代码块,当类被加载时就会执行,用于初始化连接池
static {
// 创建Properties对象,并读取db.properties配置文件
Properties properties=new Properties();
try {
properties.load(new FileReader("db.properties"));
} catch (IOException e) {
e.printStackTrace();
}
// 获取配置文件中的连接数
String num_ = (String) properties.get("init");
int num=Integer.parseInt(num_);
// 根据连接数循环创建Connection对象,并加入连接池
for (int i = 0; i <num ; i++) {
Connection connection=null;
try {
// 加载数据库驱动
Class.forName((String) properties.get("driverName"));
// 获取数据库连接
connection = DriverManager.getConnection((String) properties.get("url"), (String) properties.get("user"),(String) properties.get("pwd"));
// 将连接加入连接池
pool.add(connection);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
/**
* 获取连接,从连接池中移除最后一个连接
* @return Connection对象
*/
public static Connection getConn(){
return pool.removeLast();
}
/**
* 将连接归还到连接池中,添加到最前面
* @param connection Connection对象
*/
public static void back(Connection connection){
pool.addFirst(connection);
}
}
阅读全文