81,092
社区成员
发帖
与我相关
我的任务
分享
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="gbk"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>通过MySql的JDBC驱动访问数据库</title>
</head>
<body>
<h2>使用MySql的JDBC驱动访问数据库</h2>
<hr>
<table border="2" bgcolor="ccceee" align="center">
<tr>
<th width="87" align="center">学生ID</th>
<th width="87" align="center">学生姓名</th>
<th width="87" align="center">成绩</th>
<th width="87" align="center">班级</th>
</tr>
<%
Connection con=null; //作用是什么,能否省略,后面用Connection直接创建con对象?
Statement stmt=null; //作用是什么,能否省略,后面用Statement直接创建stmt对象?
ResultSet rs=null; //作用是什么,能否省略,后面用Resultset直接创建rs对象?
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/student?useUnicode=true&charaterEncoding=gbk";
con=DriverManager.getConnection(url,"root",""); //上面省略后,该语句前加上Connection
stmt=con.createStatement(); //上面省略后,该语句前加上Statement
String sql="select * from 成绩表 where 成绩>90";
rs=stmt.executeQuery(sql); //上面省略后,该语句前加上Resultset
while(rs.next()){
%>
<tr>
<td><%=rs.getString("学生ID") %></td>
<td><%=rs.getString("学生姓名") %></td>
<td><%=rs.getString("成绩") %></td>
<td><%=rs.getString("班级") %></td>
</tr>
<%
}
rs.close();
con.close();
stmt.close();%>
</table>
</body>
</html>
Connection con=null; //作用是什么,能否省略,后面用Connection直接创建con对象?
Statement stmt=null; //作用是什么,能否省略,后面用Statement直接创建stmt对象?
ResultSet rs=null; //作用是什么,能否省略,后面用Resultset直接创建rs对象?
try{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/student?useUnicode=true&charaterEncoding=gbk";
con=DriverManager.getConnection(url,"root",""); //上面省略后,该语句前加上Connection
stmt=con.createStatement(); //上面省略后,该语句前加上Statement
String sql="select * from 成绩表 where 成绩>90";
rs=stmt.executeQuery(sql);
}catch(Exception e){
//处理逻辑
}
这时就不能省略了。Connection con=null;
....
try {
con=DriverManager.getConnection(url,"root","");
.....
} finally {
if (con != null) {
con.close();
}
}
至于异常要不要在此捕获并处理,这个看程序设计了。我也看过专门写异常处理页面来统一处理的。
因为俺的例子里面也有 =null,所以在关于 = null的一些补充说明:
Java代码中,定义局部变量且没有赋予初始值的情况下,编译是通不过的,比如:
public void something() {
String str;
if (1==1) {
str = "Hello";
}
System.out.println(str);
}
编译器会认为,有可能因为分支不成立而导致后面访问了“未初始化变量”,注意未初始化变量跟null还是有区别滴。
不过类成员变量没这个问题,会被自动初始化。