这个是我的程序 <% try{//取当前系统时间 Calendar sttime=Calendar.getInstance(); int year=0; int month=0; int day=0; year=sttime.get(Calendar.YEAR); month=sttime.get(Calendar.MONTH)+1; day=sttime.get(Calendar.DAY_OF_MONTH); String str_year,str_month,str_day,str_time; str_year=Integer.toString(year); str_month=Integer.toString(month); str_day=Integer.toString(day); str_time=str_year+"-"+str_month+"-"+str_day; int row=0; java.sql.Connection conn; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn=DriverManager.getConnection("jdbc:odbc:archive");Statement stmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); String sql="select * from d_baseinfo where workdate<='1900-1-1' or workdate>'"+str_time+"' or dutydate<='1900-1-1' or dutydate>'"+str_time+"' or offworkdate<='1900-1-1' or offworkdate>'"+str_time+"' or Armydate<='1900-1-1' or Armydate>'"+str_time+"' and totalunitname='"+dw_zong_edit+"'";//String sql="select name,personid from d_baseinfo group by name,personid having count(unitname)>1"; //String sql="select * from d_baseinfo "; //String sql="select yd_name from yd_lb group by yd_name having count(*)>1"; //out.println(sql);ResultSet rs=stmt.executeQuery(sql);rs.last(); row=rs.getRow(); rs.first(); //out.println(row_rc) //out.println(row); if (row>0) { while(!rs.isAfterLast()) { String dw=rs.getString("totalunitname"); String dw_xia=rs.getString("unitname"); String name=rs.getString("name"); String personid=rs.getString("personid"); String wkdate=rs.getString("workdate"); String ddate=rs.getString("dutydate"); String offdate=rs.getString("offworkdate"); String adate=rs.getString("Armydate"); %> <tr> <td width="188"><p align="center"><font size="2"><%=dw%> <input type=hidden name=dw value="<%=dw%>"></td> <td width="119"><p align="center"><font size="2"><%=dw_xia%><input type=hidden name=dw_xia value="<%=dw_xia%>"> </td> <td width="96"><p align="center"><font size="2"><%=name%><input type=hidden name=name value="<%=name%>"></td> <td width="165"><p align="center"><font size="2"><%=personid%> </font><input type=hidden name=personid value="<%=personid%>"></td> <td width="114"><p align="center"><font size="2"><%=wkdate%><input type=hidden name=workdate value="<%=wkdate%>"></td> <td width="120"><p align="center"><font size="2"><%=ddate%> <input type=hidden name=dutydate value="<%=ddate%>"></td> <td width="106"><p align="center"><font size="2"><%=offdate%><input type=hidden name=offworkdate value="<%=offdate%>"></td> <td width="108"><p align="center"><font size="2"><%=adate%> <input type=hidden name=armydate value="<%=adate%>"></td> </tr> <%rs.next(); } }}catch(Exception e){ out.println("数据库连接失败!"); out.println(e.toString()); }finally{ //rs.close(); stmt.close(); conn.close();}
这个是我的报错信息,怎么会提示,无效的stmt和conn呢 D:\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\police\yd\sh_005ftime_jsp.java:433: cannot resolve symbol symbol : variable stmt location: class org.apache.jsp.police.yd.sh_005ftime_jsp stmt.close(); ^An error occurred at line: 117 in the jsp file: /police/yd/sh_time.jspGenerated servlet error: D:\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\police\yd\sh_005ftime_jsp.java:434: cannot resolve symbol symbol : variable conn location: class org.apache.jsp.police.yd.sh_005ftime_jsp conn.close(); ^ 2 errors
应该在没次用try{}住conn.open().然后在finally{}里面用conn.close()
这样应该就可以每次打开连接,每次都关闭
运行主程序
}catche(Exception){ }finally{
conn.close();
}
不是每个页面用conn.close();
应该在没次用try{}住conn.open().然后在finally{}里面用conn.close()
这样应该就可以每次打开连接,每次都关闭
应该在没次用try{}住rs.open().然后在finally{}里面用statement.close();conn.close()
如果对数据库的读写很频繁,那肯定要用连接池了
<%!
public String name(String iddd)
{
java.sql.Connection conn_yh;
java.sql.ResultSet rs_yh;
String name=null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn_yh=DriverManager.getConnection("jdbc:odbc:china");Statement stmt_yh=conn_yh.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
//String sql_yh="select * from login where id="+fh+"";
String sql_yh="select * from login where id="+iddd+"";
rs_yh=stmt_yh.executeQuery(sql_yh);
rs_yh.last();
int row_yh=rs_yh.getRow();
if(row_yh>0)
{
rs_yh.first();
name=rs_yh.getString("name");
}
rs_yh.close();
conn_yh.close();
stmt_yh.close();
}catch(Exception e){
//name="shi bai";
}
return name;
}%>
stmt_yh.close();
conn_yh.close();
最好顺序关闭
在每一个用到数据库连接的程序加上。
finally{
Connection.close();
}
连数据库
conn.close();}难道也不行吗, 我都是这样写的
要不然如果出了错,那就关不了了!
<%
try{//取当前系统时间
Calendar sttime=Calendar.getInstance();
int year=0;
int month=0;
int day=0;
year=sttime.get(Calendar.YEAR);
month=sttime.get(Calendar.MONTH)+1;
day=sttime.get(Calendar.DAY_OF_MONTH);
String str_year,str_month,str_day,str_time;
str_year=Integer.toString(year);
str_month=Integer.toString(month);
str_day=Integer.toString(day);
str_time=str_year+"-"+str_month+"-"+str_day;
int row=0;
java.sql.Connection conn;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:odbc:archive");Statement stmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
String sql="select * from d_baseinfo where workdate<='1900-1-1' or workdate>'"+str_time+"' or dutydate<='1900-1-1' or dutydate>'"+str_time+"' or offworkdate<='1900-1-1' or offworkdate>'"+str_time+"' or Armydate<='1900-1-1' or Armydate>'"+str_time+"' and totalunitname='"+dw_zong_edit+"'";//String sql="select name,personid from d_baseinfo group by name,personid having count(unitname)>1";
//String sql="select * from d_baseinfo ";
//String sql="select yd_name from yd_lb group by yd_name having count(*)>1";
//out.println(sql);ResultSet rs=stmt.executeQuery(sql);rs.last();
row=rs.getRow();
rs.first();
//out.println(row_rc)
//out.println(row);
if (row>0)
{
while(!rs.isAfterLast())
{
String dw=rs.getString("totalunitname");
String dw_xia=rs.getString("unitname");
String name=rs.getString("name");
String personid=rs.getString("personid");
String wkdate=rs.getString("workdate");
String ddate=rs.getString("dutydate");
String offdate=rs.getString("offworkdate");
String adate=rs.getString("Armydate");
%> <tr>
<td width="188"><p align="center"><font size="2"><%=dw%> <input type=hidden name=dw value="<%=dw%>"></td>
<td width="119"><p align="center"><font size="2"><%=dw_xia%><input type=hidden name=dw_xia value="<%=dw_xia%>"> </td>
<td width="96"><p align="center"><font size="2"><%=name%><input type=hidden name=name value="<%=name%>"></td>
<td width="165"><p align="center"><font size="2"><%=personid%> </font><input type=hidden name=personid value="<%=personid%>"></td>
<td width="114"><p align="center"><font size="2"><%=wkdate%><input type=hidden name=workdate value="<%=wkdate%>"></td>
<td width="120"><p align="center"><font size="2"><%=ddate%> <input type=hidden name=dutydate value="<%=ddate%>"></td>
<td width="106"><p align="center"><font size="2"><%=offdate%><input type=hidden name=offworkdate value="<%=offdate%>"></td>
<td width="108"><p align="center"><font size="2"><%=adate%> <input type=hidden name=armydate value="<%=adate%>"></td>
</tr>
<%rs.next();
}
}}catch(Exception e){
out.println("数据库连接失败!");
out.println(e.toString());
}finally{
//rs.close();
stmt.close();
conn.close();}
D:\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\police\yd\sh_005ftime_jsp.java:433: cannot resolve symbol
symbol : variable stmt
location: class org.apache.jsp.police.yd.sh_005ftime_jsp
stmt.close();
^An error occurred at line: 117 in the jsp file: /police/yd/sh_time.jspGenerated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\police\yd\sh_005ftime_jsp.java:434: cannot resolve symbol
symbol : variable conn
location: class org.apache.jsp.police.yd.sh_005ftime_jsp
conn.close();
^
2 errors
Statement stmt = null;
ResultSet rs = null;
finally{
if(rs!=null){
try{
rs.close();
catch(SQLException e){
}
........}