首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSP中的MySQL语句错误

JSP中的MySQL语句错误
EN

Stack Overflow用户
提问于 2014-05-20 07:36:17
回答 3查看 67关注 0票数 0

我对sql语句有一个问题,我不知道如何处理它。以下是问题所在:

代码语言:javascript
复制
query = "INSERT INTO `mmr`(`userID`, `RunningProjects`, `MainOrders`) VALUES ("
                        + session.getAttribute("id")
                        + ",'"
                        + request.getParameter("RunningProjects")
                        + "','"
                        + request.getParameter("MainOrders")')";

这些值来自包含自由文本的post表单。问题是,每当用户输入像'这样的字符时,我都会得到一个错误,因为它告诉编译器值在这里(我想是这样),现在查找下一个值。我不知道如何包含这些字符,并将它们发送到数据库,而不会出现错误。任何帮助都将不胜感激。谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-20 07:46:41

字符'用于在MySQL中包围文字。如果任何数据包含这样的字符作为它的一部分,我们必须转义它。这可以使用Java中准备好的语句来完成。

相应地更改查询代码。

代码语言:javascript
复制
query = "INSERT INTO `mmr`(`userID`, `RunningProjects`, `MainOrders`) 
         VALUES ( ?, ?,? )";

现在定义一个PreparedStatement实例并使用它绑定值。

代码语言:javascript
复制
PreparedStatement pst = con.prepareStatement( query );
pst.setString( 1, session.getAttribute("id") );
pst.setString( 2, request.getParameter("RunningProjects") );
pst.setString( 3, request.getParameter("MainOrders") );

int result = pst.executeUpdate();

并且,我建议使用bean来处理业务逻辑。

票数 1
EN

Stack Overflow用户

发布于 2014-05-20 07:40:29

变化

代码语言:javascript
复制
query = "INSERT INTO `mmr`(`userID`, `RunningProjects`, `MainOrders`) VALUES ("
                        + session.getAttribute("id")
                        + ",'"
                        + request.getParameter("RunningProjects")
                        + "','"
                        + request.getParameter("MainOrders")
                        + "')";
票数 1
EN

Stack Overflow用户

发布于 2014-05-20 07:40:39

我认为您在JDBC代码中使用了普通语句。相反,我建议您使用准备语句。准备语句通常用于消除此类问题和缓存问题。如果你用事先准备好的报表,我想你的问题会解决的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23753642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档