如何将此SQL查询从String转换为Int?

时间:2014-06-20 21:15:31

标签: java derby

如何将此SQL查询从String转换为Int?

String sql = "DELETE FROM DEMO.QUESTION " +
      "WHERE CAST (QUESTION_ID = '"+question+"' ,INT(10))";

1 个答案:

答案 0 :(得分:2)

回答你的问题:你正在尝试对布尔值执行cast操作,我认为这不是你想要的(而且它无关紧要)。

所以,我认为你要做的就是:

sql = "delete from demo.question " + 
      "where QUESTION_ID = cast('" + question + "', int)"

对此有一些评论:

  1. 您的问号变量可以在将代码传递给查询之前解析为代码中的整数值...这将消除您对cast函数的需求。
  2. 如果您的question变量包含值"abc",您会怎么做?考虑那种情况。
  3. 您的查询非常容易受到SQL Injection attac的攻击。考虑使用准备好的陈述。

  4. <强> 更新

    由于您使用的是Java,并且强化了我的第三个观察结果,因此您应该查看the Java tutorial on the topic(以及this)。

    我坚持认为,不是传递字符串并将其转换为查询,而是将其作为整数在Java代码中解析,并解决您的问题。