2020-12-06
程序员文章站
2022-06-05 13:46:25
...
一注意事项:
(一)在处理执行结果时,我们可以用getObject(1)或者getObject(“name”)等方式来代替getInt(1)或者getInt(“name”)这些方式
此种方式的好处是在不知返回值的类型的时候,可以采用getObject()方法,虽然需要强转
备注:这里之所以采用遍历的方式将JDBC中ResultSet对象中的值输出,只是由于我们不知道ResultSet里面有多少值
(二)代码
@Test
public void testJdbc()
{
//1.注册数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取数据库连接
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jt_tb");
//3.获取传输器
Statement stat=conn.createStatement();
//4.利用传输器执行sql语句
String sql="SELECT * FROM jt_tb";
ResultSet rs=stat.executorQuery(sql);
//5.处理执行结果
while(rs.next()){
Int id=rs.getInt("id");
Double money=rs.getDouble("money");
String name-rs.getString("name");
}
//6.关闭服务
rs.getClose();
stat.getClose();
conn.getClose();
System.out.println("塞翁失马,焉知非福");
}
```
在上面代码中我们对释放资源进行优化,则为
```java
@Test
public void testJdbc()
{
Statement stat=null;
Connection conn=null;
ResultSet rs=null;
try{
//1.注册数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取数据库连接
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jt_tb");
//3.获取传输器
stat=conn.createStatement();
//4.利用传输器执行sql语句
String sql="SELECT * FROM jt_tb";
rs=stat.executorQuery(sql);
//5.处理执行结果
while(rs.next()){
Int id=rs.getInt("id");
Double money=rs.getDouble("money");
String name-rs.getString("name");
}
//6.关闭服务
System.out.println("塞翁失马,焉知非福");
}catch(Exception e){
e.printStackTrace();
}finally{
if(rs!=null){
try{
rs.getClose();
}catch(Exception e){
e.printStackTrace();
}finally{|
rs=null;
}
}
if(stat!=null){
try{
stat.getClose();
}catch(Exception e){
e.printStackTrace();
}fianlly{
stat=null;
}
}if(conn!=null){
try{
conn.getClose();
}catch(Exception e){
e.printStackTrace();
}finally{
conn=null;
}
}
}
}
``
在上面的代码中,实际上之所以加上if判断,是由于有事在构建传输器对象时,会出现异常,这时rs=null,可是这时系统会自动跳转到catch,出现了rs.close(),这样就会出现空指针异常