简体   繁体   English

java.sql.SQLException:找不到列“ countryid”

[英]java.sql.SQLException: Column 'countryid' not found

It is my java method which i am using it for updating the user 这是我用来更新用户的java方法
at the backend i am using jdbc not jdbc template for updating the user i am unable to insert the countryid as the error is showing no countryid column name is found. 在后端,我正在使用jdbc而不是jdbc模板来更新用户,因此我无法插入countryid,因为该错误表明未找到countryid列名。 the error are showing that the counrtyid is missing but in my sql editor is have seen the query is correct to the level 错误显示该counrtyid丢失,但是在我的sql编辑器中看到查询正确到该级别

 public User updateUsers(int id) throws SQLException {
    User user = null;
    Connection con = null;
    PreparedStatement ps = null;
    int active = 0;
    try {
        con = createConnection();
        ps = con.prepareStatement(
                " select UserMaster1.usermasterid,UserMaster1.FName,UserMaster1.LName,UserMaster1.Gender,UserMaster1.address,UserLogin.Email,UserLogin.Password,UserMaster1.MobileNo,country.countryname,s.state,UserMaster1.hobby "
                        + " from UserMaster1 " 
                        + " INNER JOIN country  ON UserMaster1.country=country.countryid "
                        + " INNER JOIN state as s ON UserMaster1.state=s.stateid "
                        + " INNER join hobbyMaster ON UserMaster1.hobby=hobbyMaster.HobbyId "
                        + " INNER join UserLogin ON UserMaster1.usermasterid=UserLogin.usermasterid "
                        + " where UserMaster1.usermasterid=? ");
        ps.setInt(1, id);
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            user = new User();
            user.setId(rs.getInt("usermasterid"));
            user.setFname(rs.getString("FName"));
            user.setLname(rs.getString("LName"));
            user.setGender(rs.getString("Gender"));
            user.setEmail(rs.getString("Email"));
            user.setPassword(rs.getString("Password"));
            user.setAddress(rs.getString("address"));
            user.setMobile_no(rs.getInt("MobileNo"));
            user.setCountry(rs.getString("countryid"));
            user.setState(rs.getString("stateid"));
            user.setHobby(rs.getInt("hobby"));
        }
    } finally {
        if (ps != null) {
            ps.close();
        }
        if (con != null) {
            con.close();
        }
    }
    return user;
}

it is returning the user from the method at the technology side i am using spring-mvc i suppose it is not of the concern

It is the error which the code is showing to me on executing. 这是代码在执行时显示给我的错误。

java.sql.SQLException: Column 'countryid' not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1073)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5212)
at in.co.xomic.dao.HomeDataAcessOperation.updateUsers(HomeDataAcessOperation.java:237)
at in.co.xomic.service.HomeService.updateUserById(HomeService.java:60)
at in.co.xomic.controller.HomeController.updateUser(HomeController.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

The reason is that you get value via rs.getString("countryid") but you did not select it in your sql 原因是您通过rs.getString("countryid")获取值,但未在sql中选择它

To solve it you need to add country.country.id in your select: 要解决此问题,您需要在选择的内容中添加country.country.id

select UserMaster1.usermasterid,UserMaster1.FName,UserMaster1.LName,
 UserMaster1.Gender,UserMaster1.address,UserLogin.Email,
UserLogin.Password,UserMaster1.MobileNo,country.countryname,
s.state,UserMaster1.hobby,country.countryid,s.stateid

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM