我试图通过将SSN的最后四个数字作为用户的输入来搜索两个表中的数据。
我有一个JDBC查询,如下所示:
`String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE"
+"FROM" +" G.M_NAME_A N, G.M_ID_A M"
+"WHERE" + "N.NUMBER = M.NUMBER"
+"AND" + "M.SSN like 'l4ssn' ";'
它失败了“找不到FROM关键字”或“无效列索引”。
请帮我格式化查询。
答案 0 :(得分:1)
答案 1 :(得分:0)
按如下方式更改SQL。在FROM,WHERE和AND
周围添加了空格String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE"
+" FROM " +" G.M_NAME_A N, G.M_ID_A M"
+" WHERE " + "N.NUMBER = M.NUMBER"
+" AND " + "M.SSN like 'l4ssn' ";
您的查询会查找M.SSN
14ssn
,就像说M.SSN = '14ssn'
一样。如果您想使用与14ssn
类似的查询,请使用M.SSN like '%14ssn%'
代替
请注意,使用预准备语句而不是在sql字符串中使用query参数。
http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
答案 2 :(得分:0)
1,更改SQL如下。在FROM,WHERE和AND周围添加了空间,如果你按照你编写的sql编写,sql拼接就是这样:
String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATEFROM G.M_NAME_A N, G.M_ID_A MWHEREN.NUMBER = M.NUMBERAND M.SSN like 'l4ssn' ";
String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE"
+" FROM G.M_NAME_A N, G.M_ID_A M"
+" WHERE N.NUMBER = M.NUMBER"
-- modify +" AND" + "M.SSN like 'l4ssn' ";'
+" AND M.SSN like '%l4ssn%' ";
答案 3 :(得分:0)
尝试此查询
String sql=" SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE "+
" FROM G.M_NAME_A N,G.M_ID_A M "+
" WHERE N.NUMBER = M.NUMBER "+
" AND M.SSN like 'l4ssn' ";
答案 4 :(得分:0)
The question is resolved using the following query and PreparedStatement:
String l4ssn=("%"+l4ssn);
String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE"
+" FROM " +" G.M_NAME_A N, G.M_ID_A M"
+" WHERE " + "N.NUMBER = M.NUMBER"
+" AND " + "M.SSN like ?";
PreparedStatement pstmt = new PreparedStatement(sql);
pstmt.setString(1,l4ssn);