当前位置: 首页 > 知识库问答 >
问题:

询问jsp列名错误

柴砚文
2023-03-14

我正在编写一个jsp代码来连接Android studio和oracle数据库。我创建了一个新的name\u sql语句来获取名称。在Android Studio中运行时,Login\u fir\u sql和Login\u sec\u sql通常会接收值。但是,在执行name\u sql语句时,会出现一个称为不合适列名的错误。我应该如何更正此错误?

我在这里贴了一篇帖子,所以我设置了ip地址和ID密码来覆盖它。

非常感谢。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.sql.*"
    import = "java.util.*" %>

<%
    String login_fir_recvCode;
    String login_fir_recvNo;
    String login_fir_recvPwd;
    
    String login_sec_recvBirth;
    String login_sec_recvBusiness;
    
    String returns ="";
   
   try {
      login_fir_recvCode = request.getParameter("code");// android studio value
      login_fir_recvNo = request.getParameter("empno");// android studio value
      login_fir_recvPwd = request.getParameter("password");// android studio value
      
      login_sec_recvBirth = request.getParameter("birthday");// android studio value
      login_sec_recvBusiness = request.getParameter("business");// android studio value
      
      System.out.println(login_fir_recvCode);
      System.out.println(login_fir_recvNo);
      System.out.println(login_fir_recvPwd);
      System.out.println(login_sec_recvBirth);
      System.out.println(login_sec_recvBusiness);
      
      //DB Connect
      Connection conn = null;
      
      PreparedStatement login_fir_pstmt = null;
      PreparedStatement login_sec_pstmt = null;
      PreparedStatement name_pstmt = null;
      
      ResultSet login_fir_rs = null;
      ResultSet login_sec_rs = null;
      ResultSet name_rs = null;
      
      String login_fir_sql = null;
      String login_sec_sql = null;
      String name_sql = null;
      
      
      try {
         Class.forName("oracle.jdbc.driver.OracleDriver");
         conn = DriverManager.getConnection("jdbc:oracl:thin:@ip address:orcl", "id", "password");
         try {
            login_fir_sql = "SELECT * FROM CREW WHERE CODE= ? AND EMP_NO=? AND PASSWORD=?";//Login
            login_sec_sql = "SELECT * FROM KFC_CREW WHERE BIRTHDAY=? OR BUSINESS_NUMBER=?";//second login use Birthday
            name_sql = "SELECT NAME FROM CREW WHERE EMP_NO=?";//call name
            
            login_fir_pstmt = conn.prepareStatement(login_fir_sql);
            login_sec_pstmt = conn.prepareStatement(login_sec_sql);
            name_pstmt = conn.prepareStatement(name_sql);
           
            login_fir_pstmt.setString(1,login_fir_recvCode);
            login_fir_pstmt.setString(2,login_fir_recvNo);
            login_fir_pstmt.setString(3,login_fir_recvPwd);
            
            login_sec_pstmt.setString(1,login_sec_recvBirth);
            login_sec_pstmt.setString(2,login_sec_recvBusiness);
            
            name_pstmt.setString(1,login_fir_recvNo);
     
            login_fir_rs = login_fir_pstmt.executeQuery();
            login_sec_rs = login_sec_pstmt.executeQuery();
            name_rs = name_pstmt.executeQuery();
 
            if (login_fir_rs.next()) {
            if (login_fir_rs.getString("CODE").equals(login_fir_recvCode) && login_fir_rs.getString("EMP_NO").equals(login_fir_recvNo) && login_fir_rs.getString("PASSWORD").equals(login_fir_recvPwd)) {
               returns = "2";
            } else {
               returns = "1";
            }
         }
            if (login_sec_rs.next()) {
               if (login_sec_rs.getString("BIRTHDAY").equals(login_sec_recvBirth)||login_sec_rs.getString("BUSINESS_NUMBER").equals(login_sec_recvBusiness)) {
                 returns = "4";
              } else {
                 returns = "3";
              }
           }
           if(name_rs.next()){
                if(name_rs.getString("EMP_NO").equals(login_fir_recvNo)){
                   returns=name_rs.getString("NAME");
                }
             }
         
         } catch(Exception e){
            System.out.println("Oracle SELECT Error!"+e.getMessage());
            }
         } catch(Exception e){
            System.out.println("Oracle connection failed.");
         }
      } catch(Exception e){
         System.out.println("Server or Oracle Error!");
   } finally {
      out.println(returns); 
   }
%>

这是堆栈跟踪java。sql。SQLException:列名不正确。在oracle。jdbc。驾驶员OracleStatement。oracle的getColumnIndex(OracleStatement.java:3724)。jdbc。驾驶员OracleResultSetImpl。oracle上的findColumn(OracleResultSetImpl.java:2799)。jdbc。驾驶员OracleResultSet。org上的getString(OracleResultSet.java:498)。阿帕奇。jsp。AndroidDB_jsp_jspService(AndroidDB_jsp.java:203)位于org。阿帕奇。贾斯珀。运行时。HttpJspBase。javax上的服务(HttpJspBase.java:70)。servlet。http。HttpServlet。服务(HttpServlet.java:764)。阿帕奇。贾斯珀。servlet。JspServletWrapper。服务(JspServletWrapper.java:466)。阿帕奇。贾斯珀。servlet。JspServlet。位于org的serviceJspFile(JspServlet.java:379)。阿帕奇。贾斯珀。servlet。JspServlet。javax上的服务(JspServlet.java:327)。servlet。http。HttpServlet。服务(HttpServlet.java:764)。阿帕奇。卡特琳娜。果心应用程序过滤器链。org上的internalDoFilter(ApplicationFilterChain.java:227)。阿帕奇。卡特琳娜。果心应用程序过滤器链。doFilter(ApplicationFilterChain.java:162)位于org。阿帕奇。公猫websocket。服务器WsFilter。doFilter(WsFilter.java:53)位于org。阿帕奇。卡特琳娜。果心应用程序过滤器链。org上的internalDoFilter(ApplicationFilterChain.java:189)。阿帕奇。卡特琳娜。果心应用程序过滤器链。doFilter(ApplicationFilterChain.java:162)位于org。阿帕奇。卡特琳娜。果心标准包装阀。在org上调用(StandardWrapperValve.java:197)。阿帕奇。卡特琳娜。果心标准连接阀。在组织中调用(StandardContextValve.java:97)。阿帕奇。卡特琳娜。验证器。AuthenticatorBase。在org调用(AuthenticatorBase.java:542)。阿帕奇。卡特琳娜。果心标准主阀。在org调用(StandardHostValve.java:135)。阿帕奇。卡特琳娜。阀门。错误报告阀。在组织中调用(ErrorReportValve.java:92)。阿帕奇。卡特琳娜。阀门。抽象逻辑阀。在org调用(AbstractAccessLogValve.java:687)。阿帕奇。卡特琳娜。果心标准发动机阀。在组织中调用(StandardEngineValve.java:78)。阿帕奇。卡特琳娜。连接器。郊狼适配器。org上的服务(CoyoteAdapter.java:357)。阿帕奇。郊狼。http11.http11处理器。org上的服务(Http11Processor.java:382)。阿帕奇。郊狼。AbstractProcessorLight。org上的进程(AbstractProcessorLight.java:65)。阿帕奇。郊狼。AbstractProtocol$ConnectionHandler。过程(AbstractProtocol.java:893)。阿帕奇。公猫util。网NioEndpoint$SocketProcessor。doRun(NioEndpoint.java:1726)位于org。阿帕奇。公猫util。网SocketProcessorBase。在org上运行(SocketProcessorBase.java:49)。阿帕奇。公猫util。Thread。线程池执行器。org上的runWorker(ThreadPoolExecutor.java:1191)。阿帕奇。公猫util。Thread。ThreadPoolExecutor$Worker。在org上运行(ThreadPoolExecutor.java:659)。阿帕奇。公猫util。Thread。TaskThread$WrappingRunnable。在java上运行(TaskThread.java:61)。基本/java。lang.Thread。运行(Thread.java:831)

共有1个答案

邓昊天
2023-03-14

错误发生在getString处,因此您必须检查所有对getString(列)的调用是否带有相应SQL中可用的列名。

这样,你会发现最可疑的电话是

name_rs.get字符串("EMP_NO")

... 由于name\u rs是建立在sql上的,因此在SELECT子句中不包括EMP\u NO字段。

因此,确保get*(列)调用中引用的所有列都包含在SELECT子句中。

 类似资料:
  • 我对命名查询有问题,但我不明白为什么它不工作。 我是这样定义查询的: 在这里我使用它: 错误:由:组织引起。冬眠HibernateException:命名查询中的错误:getUserRatings

  • 问题内容: 我需要两个查询中的一个,它们每个都是分开工作的,但不能一起工作,但我收到错误消息:重复的列名,请帮忙。 问题答案: 您可能需要为每个子查询使用不同的别名。这应该工作:

  • 我特别需要上面的代码来创建一个名为“DateOfBirth”的列,而Hibernate给了我一个名为date\u of\u birth的列。我怎样才能改变这个?有网站吗。xml属性?我遇到了DefaultNamingStrategy和ImprovedNamingStrategy,但不知道如何指定其中一种。

  • 问题内容: 我遇到了NHibernate的间歇性问题,该问题会为实体生成查询,但是用来自完全不同(且不相关)的实体的列替换了其中的一列。 它只能替换单个列,通常可以通过重新启动应用程序来解决(尽管有时需要进行几次尝试)。 ASP.NET应用程序(.NET 4.0) 在Application_Start期间创建的SessionFactory NHibernate 3.3.1-通过代码映射完成所有映射

  • 问题内容: 我想将所有mysql表的col名称放入php数组中吗? 是否对此有疑问? 问题答案: 最好的方法是使用INFORMATION_SCHEMA元数据虚拟数据库。特别是INFORMATION_SCHEMA.COLUMNS表… 它非常强大,可以为您提供大量信息,而无需解析文本(例如列类型,列是否可为空,最大列大小,字符集等)… 哦,这是标准的SQL(这是MySQL的特定扩展名)… 有关表之间的