为啥查询里嵌套查询总是说找不到指定的列啊(JSP)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥查询里嵌套查询总是说找不到指定的列啊(JSP)相关的知识,希望对你有一定的参考价值。

<%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
String url="jdbc:odbc:goods";
String usename="sa";
String password="";
Connection conn= DriverManager.getConnection(url,usename,password);
Statement stmt=conn.createStatement();
ResultSet rs1=null;

ResultSet rs=stmt.executeQuery("select DISTINCT ID1,name1 from goods2");

while(rs.next())%>
<% String id=rs.getString("ID1");%>
ResultSet rs1=stmt.executeQuery("select DISTINCT pinpai from goods2 where ID1='"+id+"' ");

while(rs1.next())
<tr bgcolor="#FFFFFF">
<td><%=rs.getString("pinpai")%></td><tr>

<tr bgcolor="#FFFFFF">
<td><%=rs.getString("name1")%></td><tr>

<%%>

<%
rs.close();
stmt.close();
conn.close();
%>

同一个数据库连接里面,一次使用的只能有一个ResultSet。你的代码里面用了两个ResultSet。
当你使用rs的时候,数据库的连接是分配给rs的。而这时你如果又使用另外一个ResultSet,rs1,原来的rs的连接就已经给重置成无效的了。所以,当你的数据经历了第一次外层循环,再进入第二次外层循环的时候,就分报找不到指定列的错误。因为rs已经给取消与数据库的连接了。
你可以先通过循环,把要查询的ID取出来,存起来。然后,再把存起来的ID进行循环,重循环里面去取对应的ID对应的信息。
同时使用两个或者两个以上的ResultSet是不允许的----目前,目前的数据库是不允许的。

有问题再补充哈。。。
天天开心。。。
:)
参考技术A 你这个应该从日志中很容易找出来才对,你看看你的那个数据库表goods2中是否存在那几个列。

另外,我看了你代码,其中的<%%>使用是不是太多了?而且使用不当,修改如下:

<%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
String url="jdbc:odbc:goods";
String usename="sa";
String password="";
Connection conn= DriverManager.getConnection(url,usename,password);
Statement stmt=conn.createStatement();
ResultSet rs1=null;

ResultSet rs=stmt.executeQuery("select DISTINCT ID1,name1 from goods2");

while(rs.next())
String id=rs.getString("ID1");
ResultSet rs1=stmt.executeQuery("select DISTINCT pinpai from goods2 where ID1='"+id+"' ");

while(rs1.next())
%>
<tr bgcolor="#FFFFFF">
<td><%=rs.getString("pinpai")%></td><tr>
<%

rs1.close(); //增加的内容,否则可能出现数据库连接泄露的问题
%>
<tr bgcolor="#FFFFFF">
<td><%=rs.getString("name1")%></td><tr>

<%

rs.close();
stmt.close();
conn.close();
%>

其中给你增加了一行,也已经注释说明了。
还有什么问题请单独联系。

MATLAB7.0装好后打开说找不到指定模块该怎么办

我的处理器是AMD的 刚开始一打开就自动关闭 改了环境变量 之后就是找不到指定模块

参考技术A 这个问题也让我苦恼了很久,今天终于弄明白了。网上的说法是对的,修改环境变量。
新建变量名:BLAS_VERSION
变量值:D:\matlab7\bin\win32\atlas_Athlon.dll
关键是这里,变量值。在你的安装文件夹里搜索atlas_Athlon.dll,看好它的路径。以我的为例
我的是变量名:BLAS_VERSION
变量值:E:\Matlab\bin\win32\atlas_Athlon.dll
之前就是因为我照搬网上的,所以虽然解决了打开就关闭的问题,但出现找不到指定模块。一般bin\win32\atlas_Athlon.dll都一样,但安装的盘不一样,D或E都有,或者安装文件夹命名不同,matlab或matlab7,萝莉啰唆说了这么多,希望对你有帮助【转】

以上是关于为啥查询里嵌套查询总是说找不到指定的列啊(JSP)的主要内容,如果未能解决你的问题,请参考以下文章

HiveQL SELECT语句查询

为啥我打开 www.baidu.com 总是被一个 啥 114网页代替 还说找不到 www.baidu.com 这个网页

我被嘲笑了:被查询的列,为啥要放到索引里?(1分钟系列)

我被嘲笑了:被查询的列,为啥要放到索引里?(1分钟系列)

mybatis查询不到数据库里的表

为啥我的电脑上的串口不能用,,用串口调试助手的时候说找不到?