0 0

要不要关闭Connection对象,为什么10

我写了一个类 封装了MySQL数据库的连接方法,一个是用类方法实现,一个是用对象方法实现,如下:
public static Connection getConn() throws Exception{
Connection conn=null;
try{
Class.forName(strDataDriverName);
} catch (ClassNotFoundException e) {
// TODO: handle exception
throw new Exception(e);
}
try {
conn=DriverManager.getConnection(strDataURL,strDataUserName,strDataPWD);
} catch (SQLException e) {
// TODO: handle exception
throw new Exception(e);
}
return conn;
}
//
public Connection getConnection() throws Exception {

Connection conn=null;
try{
Class.forName(strDataDriverName);
} catch (ClassNotFoundException e) {
// TODO: handle exception
throw new Exception(e);
}
try {
conn=DriverManager.getConnection(strDataURL,strDataUserName,strDataPWD);
} catch (SQLException e) {
// TODO: handle exception
throw new Exception(e);
}

return conn;
}


这两个方法都没有关闭conn, 因为要返回conn, 我想问下 如果在外部声明一个 conn=类.getConn  后 然后关闭conn 是不是接可以了也就同样的关闭了类.getConn中的conn,主要是 这两个conn对象是不是一个?
如果用下面的对象.getConnection, 疑惑同上!!

问题补充:
ljjclub 写道
在你这个工具类里面写上关闭方法
public static void close(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

然后在哪调用连接就在哪关闭



那这样就要  在类中声明一个private 的 conn的对象了  ,然后添加一个close方法


这样在其他类中使用的时候 要 关闭2个 conn 了  ,对吗 ?
DAO 
2011年12月13日 09:11

4个答案 按时间排序 按投票排序

0 0

采纳的答案

比如你在这个类里写的conn 和 close;
public class DBUtil {
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String dbUrl = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String username = "scott";
String password = "tiger";
conn = DriverManager.getConnection(dbUrl, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}

        public static void close(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

在其他类中需要连接数据库时这样
Connection  = null;
conn = DBUtil.getConnection();
然后
conn.close(); 就行了

2011年12月13日 11:19
0 0

怎么会关闭俩个conn呢,什么意思

2011年12月13日 11:20
0 0

在你这个工具类里面写上关闭方法
public static void close(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

然后在哪调用连接就在哪关闭

2011年12月13日 10:33
0 0

应该不是同一个!

2011年12月13日 09:36

相关推荐

    connection对象的execute方法

    ### Connection对象的Execute方法 在数据库编程中,`Connection`对象是与数据库建立连接的关键组件。通过`Connection`对象,可以执行SQL语句、存储过程等操作,从而实现对数据库的读写。其中,`execute`方法是`...

    ADO.NET架构、Connection对象

    你可以设置CommandText属性来指定要执行的SQL语句,然后通过Connection对象执行这个命令。Command对象还支持参数化查询,可以防止SQL注入攻击。 3. **DataAdapter对象**:DataAdapter作为桥梁,负责在数据库和...

    connection 和 preparedstatement 的关闭问题

    ### Connection 和 PreparedStatement 的关闭问题 在Java编程语言中,处理数据库连接及执行SQL语句时,合理地管理和释放资源是非常重要的。本文将详细介绍`Connection`和`PreparedStatement`的使用时机与关闭策略,...

    怎样实现关闭connection时自动关闭Statement和ResultSet (下篇)

    在这个改进后的版本中,当离开try块时,所有的AutoCloseable对象(包括Connection、Statement和ResultSet)都会自动关闭,无论是否抛出异常,从而避免了资源泄露的问题。 此外,还可以考虑使用PreparedStatement和...

    connection对象与recordset对象的常用属性及方法[文].pdf

    `Connection`对象的`State`属性用来指示与数据源的连接状态,例如是否已打开、关闭或正在尝试连接。使用`Open`方法可以建立连接,而`Close`方法则用于关闭连接。执行SQL语句或存储过程可以通过`Execute`方法实现。...

    编程高手之路—跟我学VB(续)--vb_adodb_Connection对象简介.doc

    B.Connection 创建了一个新的 ADODB.Connection 对象实例,connection1,然后通过设置 ConnectionString 属性来配置连接信息。这里,连接信息包括驱动程序(SQL Server),服务器名称(Myserver),用户名(sa),...

    Connection

    6. **关闭资源**:在所有操作完成后,应关闭`ResultSet`、`PreparedStatement`和`Connection`对象,释放数据库资源。 - 示例代码: ```java public void allclose(Connection con, ResultSet rs, ...

    Execute 方法 (ADO Connection)

    其中,connection 是 ADO Connection 对象,CommandText 是要执行的 SQL 语句或命令,RecordsAffected 是一个可选的长整型变量,用于存储操作所影响的记录数目,Options 是一个可选的长整型值,用于指定提供者如何...

    详解Python 数据库的Connection、Cursor两大对象

    首先,我们来详细解析Connection对象。在Python中,使用数据库通常需要先建立一个到数据库服务器的连接。Connection对象就是代表这样的一个连接。它通常通过调用数据库驱动库提供的接口函数来创建,比如在使用MySQL...

    connection属性例子

    在使用`Connection`对象时,遵循最佳实践很重要,如使用`using`语句块来确保即使在异常情况下也能正确关闭和清理连接: ```csharp using (SqlConnection connection = new SqlConnection(connectionString)) { ...

    JdbcConnection

    2. **建立连接**:通过`DriverManager.getConnection()`方法创建与数据库的连接,这个连接就是JDBCConnection对象。 3. **创建Statement或PreparedStatement**:根据需求,可以选择创建Statement对象执行静态SQL...

    ADODB.Connection.rar_vb ADODB

    创建一个新的ADODB.Connection对象,你需要设置ConnectionString属性,该属性通常包含数据库驱动名、数据库路径、用户ID和密码等信息。 创建连接的基本步骤如下: 1. 引用ADODB库:在VB项目中,首先需要添加对...

    ADO三大对象详解

    ADO 三大对象分别是 Connection 对象、Command 对象和 Recordset 对象,每个对象都有其特定的属性和方法,本文将详细解释这些对象的属性和方法。 Connection 对象 Connection 对象是 ADO 的核心对象,用于建立和...

    winform 使用CommandBehavior.CloseConnection源码

    // 这里不需要显式关闭连接,因为已设置为CloseConnection } } ``` 在这个例子中,当`ExecuteReader`执行后,数据库连接将在读取完数据或发生异常时自动关闭。这种方式既简洁又有效,避免了忘记关闭连接可能导致...

    mysql-connection.jar

    - **关闭资源**:执行完数据库操作后,记得关闭Statement、ResultSet和Connection,释放资源。 4. **连接池** 在实际应用中,通常会使用连接池如C3P0、HikariCP或Apache DBCP等,管理数据库连接。连接池预先创建...

    java.sql.connection.pdf

    在Java编程中,当你需要执行SQL语句、管理事务或者获取数据库元数据时,都会用到Connection对象。以下是对接口Connection中重要概念和方法的详细解释: 1. **事务管理**: - `TRANSACTION_NONE`:表示不支持事务。...

    Connection简单操作

    首先,`Connection`对象是JDBC的核心组件,它代表了应用程序与数据库之间的会话。当你创建一个`Connection`对象时,就建立了一个到特定数据库的物理连接。例如,在Java中,你可以使用以下代码创建`Connection`: ``...

    jdbc connection

    3. **创建Statement**:通过`Connection.createStatement()`或`Connection.prepareStatement()`创建执行SQL语句的对象。`Statement`用于执行静态SQL,而`PreparedStatement`则用于预编译SQL,提供更好的性能和安全性...

    c# mysql connection

    例如,`ConfigurationManager.ConnectionStrings["connectionName"]`可以获取到名为“connectionName”的连接字符串。 - 这样做有利于代码的灵活性,因为连接信息可以在不修改代码的情况下进行更改。 3. **创建C#...

Global site tag (gtag.js) - Google Analytics