SqlConnection的Dispose()方法详解

SqlConnection的Dispose()方法详解,第1张

这个方法是SqlConnection实现IDisposable接口得来的。是为了配合using语法。当然你也可以显式调用,你自己看下他的源代码,事实上该方法会调用Close方法,用以关闭链接。只有链接关闭才能放回连接池供ADO.NET连接池机制使用。

可以用jdbc来连接数据库,完整代码如下:

package com.jdbc.test

import java.sql.Connection

import java.sql.DriverManager

import java.sql.ResultSet

import java.sql.Statement

public class JDBCTest {

public static void main(String[] args) throws Exception {

//1.加载驱动

//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")

//Class.forName("com.mysql.jdbc.Driver")

Class.forName("oracle.jdbc.driver.OracleDriver")

//2.创建数据库连接对象

//Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433databaseName=db","sa","sqlpass")

//Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8","root","123456")

Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","Oracle123")

//3.创建数据库命令执行对象

Statement stmt = conn.createStatement()

// PreparedStatement ps = conn.prepareStatement("select * from t_user")

//4.执行数据库命令

ResultSet rs = stmt.executeQuery("select * from t_user")

// ResultSet rs = ps.executeQuery()

//5.处理执行结果

while (rs.next()) {

int id = rs.getInt("id")

String username = rs.getString("username")

String password = rs.getString("password")

System.out.println(id + "\t" + username + "\t" + password)

}

//6.释放数据库资源

if (rs != null) {

rs.close()

}

// if (ps != null) {

// ps.close()

// }

if (stmt != null) {

stmt.close()

}

if (conn != null) {

conn.close()

}

}

}

虽然Java有自动内存回收机制,但是如果是数据库连接、网络连接、文件 *** 作等,不close是不会被回收的,属于不正确的代码。\x0d\x0a也就是说,有close方法,必须得自己调用一下才行。\x0d\x0a垃圾回收机制仅在Java虚拟机所控制的范围内释放资源。\x0d\x0a对于类似于数据库连接、socket以及文件 *** 作等,\x0d\x0a如果有close方法,在你完成任务后执行它\x0d\x0a并且最好在finally块内做close,因为即使发生了例外,这些代码也能被调用。\x0d\x0a对于使用完了的对象来讲,Java不推荐使用类似于C++的析构函数来释放内存(C++中new完后得delete,Java中new完,使用后,将其置\x0d\x0a成null比较好),因为GC会调节最适当的时间来释放内存,在程序中滥用delete会降低Java程序的性能(但应该不会引发额外的错误)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9982903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存