我在写一个从数据库中获取记录的程序。我想创建一个基于3个变量(studentID,firstName和/或lastname)的动态查询。这里是一个返回记录我的Java代码:带有Java的动态SQL查询
result = statement.executeQuery("SELECT * FROM student "
+ "WHERE (studentID = "
+ getStudentId() + " AND " + getStudentId() + " <> 0)"
+ " OR (firstName = '"
+ getFirstName() + "' AND '" + getFirstName() + "' IS NOT NULL)"
+ " OR (lastName = '"
+ getLastName() + "' AND '" + getLastName() + "' IS NOT NULL)");
(很抱歉,如果这是可怕的格式阅读)
我想是关于搜索返回的结果基于什么变量是模糊的特定存在。目前,如果studentID是唯一提供的字段,它将返回该单个记录,或者如果studentID不存在但firstName是,则它将通过firstName返回所有记录(如果只存在变量,则返回lastName)。不起作用的是,如果我提供firstName和lastName,它将返回带有firstName的所有记录,而不管记录的最后一个名称,以及所有带有lastName的记录,而不管第一个名字是什么。实施例的firstName = “比尔” 和lastName = “杰克逊”:
1比尔·哈德 2史蒂夫杰克逊 3比尔杰克逊 4比尔斯图尔特 5丹尼斯杰克逊 6温迪杰克逊 7个比尔马修斯
我我试图弄清楚的是,如果我提供的具体条件,如firstName和lastName如何获得包含指定的名字和姓氏的特定记录。
首先,我建议您阅读准备好的语句:http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html – NPE 2013-03-13 11:48:12
当然,必须有'xkcd'引用(这看起来特别适合你的例子):http://xkcd.com/327/ – NPE 2013-03-13 11:49:18
你的叙述描述了一个需要条件逻辑的情况。但是,您的代码中没有任何内容。 – 2013-03-13 11:57:22