mysql - 我可以使用字符串作为 WHERE 子句吗

标签 mysql sql jsp

任何人都可以帮我解决这个 JSP 问题吗? 我尝试使用与此类似的代码更新数据库:

所以,我的 Servlet 上有这个:

String QueryCondition = "id = 1";

这将被传递给这个存储过程:

CREATE 
    DEFINER=`root`@`localhost` 
    PROCEDURE `storedprocedure_1`(QueryCondition TEXT)
BEGIN
    UPDATE users SET name = 'John'
    WHERE QueryCondition;
END

我在想这是否可能,因为更新总是失败。
如果这是不可能的,你可以建议我如何做这样的事情

最佳答案

您可以在存储过程中使用它,但需要使用准备好的语句。

示例:

DELIMITER //

CREATE 
  DEFINER=root@localhost 
  PROCEDURE storedprocedure_1(QueryCondition TEXT) 
BEGIN 
  SET @query := CONCAT( 'UPDATE users SET name = \'John\' WHERE ',
                        QueryCondition );

  PREPARE stmt FROM @query;
  EXECUTE stmt;
  DROP PREPARE stmt;
END;
//

DELIMITER ;

关于mysql - 我可以使用字符串作为 WHERE 子句吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22893234/

相关文章:

java - 如何在jsp中获取动态创建的文本框的值

mysql - 如何比较和应用 toad for mySQL 中的更改

php - 如何获取自动行号php和mysql

mysql - SQL - 计算从事相同工作的人数。给出简单代码

SQL 查询获取给定邮政编码 20 英里半径内的所有邮政编码(地址)

javascript - 使用 JSP、Java 和 Javascript 的带有数据库数据的 HTML 表

xml - 在 JSP 文件中导入带有 JSTL 核心的 XML 文件时,请求的资源不可用

mysql - 哪个 utf8 排序规则最好?

php - CodeIgniter 将多维数组作为单独的行插入到数据库表中

mysql - 使用桥接表进行一对多