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")
//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程序的性能(但应该不会引发额外的错误)。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)