我有一个这样的数据库:

id ----名称----地点

1 ----乔治-----

2——约翰------有些

3 ---- Stefi ------夏威夷

我有一个从servlet获得的变量,它是我们要与之比较的值。假设它的idOwn = 1,所以我们要选择id大于1的所有内容,在这种情况下,是John和Stefi。这是我到目前为止所做的,但它表示存在语法问题。

else if (idOwn != 0) {
        sql = "SELECT * FROM posts WHERE id>? LIMIT 25";

        try {
            stmt = (PreparedStatement) GetConnection.buildConnection()
                    .prepareStatement(sql);
            stmt.setLong(1, idOwn);
            st = stmt.executeQuery();
            while (st.next()) {
                list.add(new PostBuilder()
                        .setName(st.getString("name"))
                        .setTime(st.getTimestamp("time"))
                        .setMessage(st.getString("message"))
                        .setId(st.getLong("id"))
                        .setUserId(st.getLong("userID"))
                        .setComments(CommentRegistry.getInstance().fetchComments(idOwn)).build());
               return list;
            }


先感谢您 :)
既然你在这里问了StackTrace

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
at sun.reflect.GeneratedConstructorAccessor14.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
at com.mysql.jdbc.Util.getInstance(Util.java:383)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1062)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4226)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4158)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2834)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2783)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1569)
at com.kasapin40.social.comments.CommentRegistry.fetchComments(CommentRegistry.java:46)
at com.kasapin40.social.posts.PostRegistry.getPostList(PostRegistry.java:87)
at com.kasapin40.social.servlet.FetchPosts.doGet(FetchPosts.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.kasapin40.social.filter.LoginFilter.doFilter(LoginFilter.java:33)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:534)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

最佳答案

@nitheism,您可以在此处打印stacktrace吗?

我认为这与MySql问题无关,因为我毫无疑问地执行了查询。

CREATE TABLE POSTS (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
place VARCHAR(50)
);

insert into POSTS values (1, 'George', 'New York');
insert into POSTS values (2, 'John', 'Colorado');
insert into POSTS values (3, 'Stefi', 'Hawaii');

SELECT * FROM POSTS WHERE id>1 LIMIT 25;

关于java - Java MySQL如何选择ID大于特定值的所有元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28581710/

10-11 03:40
查看更多