java准备好的语句

Posted

技术标签:

【中文标题】java准备好的语句【英文标题】:java prepared statement 【发布时间】:2012-12-04 08:38:09 【问题描述】:

我有这样的需求...

需要执行一个javaprepared statement示例:

String sql = "select first_name from student where roll_no :=1";
connection.prepareStatement(sql);

但问题是,有时表中可能没有上述查询的行。 在这种情况下,我想查询第二个表说student2。因此,现在的 sql 查询将是:

String sql2 = "select first_name from student2 where roll_no :=1";

有没有办法实现在单个 sql 查询中从另一个 table(student2) 中进行选择的条件。

我想要这样的伪代码:

String sql = "if student1 table doesn't have a roll_num, then query student2 table";

【问题讨论】:

我认为这不是 SQL 问题,而更多是您的数据库设计的问题。也许你应该重新考虑你的数据库表,所以你不需要那么复杂的查询。 【参考方案1】:

创建一个使用准备好的语句调用的数据库过程 mysql, Oracle。 希望这会有所帮助

【讨论】:

【参考方案2】:

虽然您的设计不好,但我正在暗示实现您的要求。执行第一个查询时,只需检查是否有可用的结果集,如果没有,则执行第二个查询。

ResultSet rs = statement.execute();
if (!rs.next())
//ResultSet is empty

在 If 块中,您需要执行第二个查询。

注意:如果不可能,首先重新考虑您的设计。这个解决方案有效,一个蹩脚问题的蹩脚解决方案:)

【讨论】:

【参考方案3】:

我认为你可以使用例如联合为:

select val from (select 'A' as val from DUAL
                 union
                 select 'B' as VAL from DUAL)
where rownum = 1;

但是@tbraun89 是正确的首先考虑您的数据库结构

【讨论】:

以上是关于java准备好的语句的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中将动态 SQL 查询转换为准备好的语句

java准备好的语句

在 Java 中转义 MySQL 字符串...没有准备好的语句

设置准备好的语句参数 where NOT NULL java

如何在 Java 中使用准备好的语句进行选择查询?

为啥准备好的语句在java中不起作用?