可以这样写么?

yuvictory 2006-10-26 11:01:59
SQL="Select * from OSeasonSched";
rs = dbt.executeQuery(SQL);
String SQL1="select AIRPORT_IATA from SAirport where CITY_IATA = (select CITY_IATA from SCity where NAME_CHINESE ='"+city1+"')";
res1=dbt.executeQuery(SQL1);
String SQL2="select AIRPORT_IATA from SAirport where CITY_IATA = (select CITY_IATA from SCity where NAME_CHINESE ='"+city2+"')";
res2=dbt.executeQuery(SQL2);
whlie(rs.next() && res1.next() && res2.next())
{ }
...全文
232 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
liaohaiying 2006-12-19
  • 打赏
  • 举报
回复
定义三个dbt1,dbt2,dbt3吧
或者用一个dbt就初始化它再用
jicken_woo 2006-12-19
  • 打赏
  • 举报
回复
请教一下,如果把中间层的sql语句的结果赋给一个变量,外层sql语句使用这些中间变量来执行的话,这样和写嵌套sql那种好一些?
对占用系统资源的角度来看,有多大的区别?
麻烦大家给解释一下
谢谢。。
yangbin210 2006-12-19
  • 打赏
  • 举报
回复
我也碰到了同样的问题,刚才把关闭连接删除了就没有问题了。
但是不关闭连接,会占用系统资源。
yuvictory 2006-10-26
  • 打赏
  • 举报
回复
是相同数据库,但是是不同的表!提示下面的错误:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.validateClosedState(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.commonFetchInitialize(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.next(Unknown Source)
at org.apache.jsp.search_005fdo_jsp._jspService(org.apache.jsp.search_005fdo_jsp:356)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
polarman 2006-10-26
  • 打赏
  • 举报
回复
要看dbt.executeQuery是怎么实现的,如果能保证三次调用时用的是不同的数据库连接,就没问题
keephope 2006-10-26
  • 打赏
  • 举报
回复
感觉没问题

keephope 2006-10-26
  • 打赏
  • 举报
回复
把dbt

该为
dbt1
dbt2
dbt3

试下

感觉应该是没问题了
伊丽莎白S 2006-10-26
  • 打赏
  • 举报
回复
大概就是這樣了,沒測試。在你做數據連接什麽的時候調用就可以了。其實就是每句話分別用一個自己的連接:
public ResultSet Selects(String sql)
{ResultSet rs = null;
try{
MyDBConnectClass db = new MyDBConnectClass();
rs = db.executeQuery(sql);
db.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}

return rs;
}
伊丽莎白S 2006-10-26
  • 打赏
  • 举报
回复
反正你要的就是三個rs,然後再來比較阿,所以寫一個通用的輸入sql語句返回RS的方法,調用下來就是了阿。

其實返回rs也不是很好,最好還是把查出來的數據用別的容器裝起來比,如數組什麽的,然後就只剩下數據的比較了。

我的程序還有其他麻煩的内容,而且也沒有作比較的要求,只是rs1有值是執行后一個sql的條件罷了,所以可能貼出來也沒什麽太大用處。
yuvictory 2006-10-26
  • 打赏
  • 举报
回复
我需要这样的比较:
if(res1.getString("AIRPORT_IATA").equals(rs.getString("AIRPORT1"))){....}
yuvictory 2006-10-26
  • 打赏
  • 举报
回复
能把你改的给我看看么?
伊丽莎白S 2006-10-26
  • 打赏
  • 举报
回复
我也曾遇見一樣的問題,如果連續使用超過兩次,就會出這個錯。後來把數據庫查詢寫成了單獨的方法,不但問題解決了,感覺程序也清楚一些
伊丽莎白S 2006-10-26
  • 打赏
  • 举报
回复
建議不這樣寫
錯誤就是Object has been closed,表示不能繼續用這個連接。
你可以把數據庫查詢做一個方法,返回resultset,再在這裡調用三次
yuvictory 2006-10-26
  • 打赏
  • 举报
回复
没有人帮我看看呢?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧