java - 向数据库插入数据时出现 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException

标签 java mysql jdbc

我正在为数据库制作一个插入程序..

我只有一个文本框来将文章插入我的网页。

当我插入这篇文章时:

But while the results are pretty exciting, it's important to note that this is still a small-scale study and further research is needed to confirm the link between SERT and SAD, as well as the role that sunlight plays on serotonin.

The next step will be to find out more about why some people increase SERT production as the days get shorter, and why some people are unaffected. It’s estimated SAD affects more than 12 million people across northern Europe.

Sam Challis, an information manager at British mental health charity Mind, told the BBC: "We don't yet know enough about how serotonin levels can be affected by light levels so this is quite an interesting, albeit small, study. We would welcome more research."

将该文章更新到数据库后..它抛出一个错误:

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 's important to note 
that this is still a small-scale study and further researc' at line 1
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.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:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2617)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2778)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2819)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1811)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1725)
    at org.apache.jsp.controller.rajendra.arora.successfully_jsp._jspService(successfully_jsp.java:71)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:403)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:347)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    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:51)
    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:221)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:107)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:76)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:934)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:90)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:515)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1012)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:642)
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1555)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

我有这个代码插入数据库:

    String content=request.getParameter("content");
    try{
        Class.forName("com.mysql.jdbc.Driver");
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/news", "root", "1234");
        Statement st=con.createStatement();
        int i=st.executeUpdate("insert into main_news(my_news) values('"+content+"')");
        }
        catch(Exception e){
        e.printStackTrace();
    }

当然,我们将不胜感激!

最佳答案

正如 DaniEll 所说,这是因为您的字符串包含单引号 (')。为了防止出现此问题,您可以使用 PreparedStatement:

PreparedStatement ps = con.prepareStatement
      ("insert into main_news(my_news) values(?)");
ps.setString(1,content);
ps.executeUpdate();

关于java - 向数据库插入数据时出现 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27607184/

相关文章:

mysql - ResultSet 关闭后不允许进行操作 VendorError :0

java - jdbc 连接错误

Java - 需要 MySQL 并发解决方案

java - Salesforce - 通过 API 创建案例后触发自动响应规则

mysql - 在组语句中依赖 order by 是否安全?

mysql - 如何在同一个表中连接或拆分 VARCHAR 类型的列

mysql - mysql 查询中仅按数字搜索

带有静态泛型方法的java静态泛型hashmap

java - 避免检查中间对象的空值

java - 使用 ExecutorService ,而不是做 Thread.start