oracle 10g,tomcat,xp我现在只能打开一次数据库连接,执行一次查询,这是没有问题的。这个 OK后,我执行其他连接数据库的代码和语句,要么提示错误,要么没有返回结果。
请问是怎么回事,如何解决呢。
我没有使用javabean,连接,查询都是在 jsp,使用脚本段做的。有什么要注意的么。
请问是怎么回事,如何解决呢。
我没有使用javabean,连接,查询都是在 jsp,使用脚本段做的。有什么要注意的么。
所以不同页面是需要新建connection的,感觉上是建立一个连接后,其他的连接就不能用了。
因为我这个表单的连接使用后,之前一个好的查询页面查询后的数据不显示了。
<%
try{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}catch(Exception e){
out.println(e);}
String url="jdbc:oracle:thin:@137.200.32.65:1521:oamissid";
String user="aem";
String password="aem";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="Select name from event_level ";
ResultSet rs=stmt.executeQuery(sql);
%>
<select name="Eventlevel" size="1" id="select">
<option value="Please choose">--please choose--</option>
<%
while(rs.next()){%>
<option value='<%=rs.getString("name")%>'><%=rs.getString("name")%></option>
<% } %>
<% rs.close();
stmt.close(); %>
</select> </td>
</tr>
<tr>
<td height="37" bordercolor="#FF3300"><a class="subnavlink">Report User</a></td>
<td bordercolor="#FF3300"><input type="text" name="Reportuser" id="ReportUser" /></td>
<td bordercolor="#FF3300"><a class="subnavlink">Location</a></td>
<td bordercolor="#FF3300">
<%
Statement stmt1=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql1="Select name from store ";
ResultSet rs1=stmt1.executeQuery(sql1);
%>
<select name="Location" size="1" id="Location">
<option value="Please choose">--please choose--</option>
<%
while(rs1.next()){%>
<option value='<%=rs1.getString("name")%>'><%=rs1.getString("name")%></option>
<% } %>
<%
rs1.close();
stmt1.close();
%> </select>
</td>
</tr>
<tr>
<td height="37" bordercolor="#FF3300"><a class="subnavlink">Email Address</a></td>
<td bordercolor="#FF3300"><input type="text" name="Emailaddress" id="Email" /></td>
<td bordercolor="#FF3300"><a class="subnavlink">Phone Number</a></td>
<td bordercolor="#FF3300"><input type="text" name="Phonenumber" id="Phone" /></td>
</tr>
<tr>
<td height="40" bordercolor="#FF3300"><a class="subnavlink">Subject</a></td>
<td bordercolor="#FF3300"><input type="text" name="Subject" id="Subject" /></td>
<td bordercolor="#FF3300"><a class="subnavlink">Event Application</a></td>
<td bordercolor="#FF3300">
<%
Statement stmt2=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql2="Select sub_catalog from catalog ";
ResultSet rs2=stmt2.executeQuery(sql2);
%>
<select name="Eventapplication" size="1" id="Event Application">
<option value="Please choose" selected>--please choose--</option>
<%
while(rs2.next()){%>
<option value='<%=rs2.getString("sub_catalog")%>'><%=rs2.getString("sub_catalog")%>
</option>
<% } %>
<%
rs1.close();
stmt1.close();
conn.close();
%>
</select>
这个是表单提交页面。没有问题。
下面的是传递参数,插入值的页面。
<% String EventNumber=request.getParameter("Eventnumber");
String ReportUser=request.getParameter("Reportuser");
String EmailAddress=request.getParameter("Emailaddress");
String Subject=request.getParameter("Subject");
String EventLevel=request.getParameter("Eventlevel");
String Location=request.getParameter("Location");
String PhoneNumber=request.getParameter("Phonenumber");
String EventApplication=request.getParameter("Eventapplication");
String EventDescription=request.getParameter("input");
out.println(EventNumber+"+"+EventLevel+"+"+PhoneNumber);
%><%
try{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}catch(Exception e){
out.println(e);} String url="jdbc:oracle:thin:@137.200.32.65:1521:oamissid";
String user="aem";
String password="aem";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="insert into event(Event_Id,LEVEL_ID,SUBJECT,EMAIL) values ('001','3','iE','[email protected]')";
out.println("Test the insert is ok.");
int affectedRowCount=stmt.executeUpdate(sql);
out.println(affectedRowCount);
stmt.close();
conn.close();%>
<% String EventNumber=request.getParameter("Eventnumber");
String ReportUser=request.getParameter("Reportuser");
String EmailAddress=request.getParameter("Emailaddress");
String Subject=request.getParameter("Subject");
String EventLevel=request.getParameter("Eventlevel");
String Location=request.getParameter("Location");
String PhoneNumber=request.getParameter("Phonenumber");
String EventApplication=request.getParameter("Eventapplication");
String EventDescription=request.getParameter("input");
out.println(EventNumber+"+"+EventLevel+"+"+PhoneNumber);
%><%
try{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}catch(Exception e){
out.println(e);} String url="jdbc:oracle:thin:@137.200.32.65:1521:oamissid";
String user="aem";
String password="aem";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="insert into event(Event_Id,LEVEL_ID,SUBJECT,EMAIL) values ('001','3','iE','[email protected]')";
out.println("Test the insert is ok.");
int affectedRowCount=stmt.executeUpdate(sql);
out.println(affectedRowCount);
stmt.close();
conn.close();%>
因为我测试的时候是固定值,没有从页面中取。
两次的操作,event_id这个值是不 能重复的。 数据库是同事建的,这个问题没有注意。
也怪测试问题,没有直接从参数中取。Eventnumber 是自动获得比较好。