运行我的Java代码,当我面对这个错误 - >
问题描述:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
public static void loanenquiry(String ApplicationID,String LoanNumber,String RIMNumber,String custname,String fromdate,String todate) {
String wherestring = "SELECT * FROM bf_loanmaster WHERE";
try {
if(ApplicationID != null) {
wherestring = wherestring + "ApplicationID ="+BillAction.StringtoInt(ApplicationID)+"";
}
if(LoanNumber != null) {
if(ApplicationID != null) {
wherestring = wherestring + "AND LoanNumber = "+BillAction.StringtoInt(LoanNumber)+" ";
} else {
wherestring = wherestring + "LoanNumber = "+BillAction.StringtoInt(LoanNumber)+" ";
}
}
if(RIMNumber != null) {
if(ApplicationID != null && LoanNumber != null) {
wherestring = wherestring + "AND AdvparyRIM = "+RIMNumber+" ";
} else {
wherestring = wherestring + "AdvparyRIM = "+RIMNumber+"";
}
}
if(custname != null){
if(ApplicationID != null && LoanNumber != null && RIMNumber != null) {
wherestring = wherestring + "AND custName = "+custname+"";
} else {
wherestring = wherestring + "custName = "+custname+"";
}
}
if(fromdate != null) {
if(ApplicationID != null && LoanNumber != null && RIMNumber != null && custname != null) {
wherestring = wherestring + "AND ApplicationDt >= "+BillAction.StringtoDate(fromdate)+" ";
} else {
wherestring = wherestring + "ApplicationDt = "+BillAction.StringtoDate(fromdate)+"";
}
}
if(todate != null) {
if(ApplicationID != null && LoanNumber != null && RIMNumber != null && custname != null && fromdate != null) {
wherestring = wherestring + "AND ApplicationDt >= "+BillAction.StringtoDate(fromdate)+" AND ApplicationDt <= "+BillAction.StringtoDate(todate)+"";
} else {
wherestring = wherestring + "ApplicationDt >= "+BillAction.StringtoDate(todate)+"";
}
}
Connection conn = BillFinanceDB.getDBConnection();
PreparedStatement psloanenquiry= conn.prepareStatement(wherestring + ";");
ResultSet rs = psloanenquiry.executeQuery();
while(rs.next()) {
System.out.println("loan number"+rs.getInt("LoanNumber"));
}
} catch(SQLException e) {
e.printStackTrace();
}
}
任何想法?
感谢您的帮助。
答
给出一个空间,在你的查询
String wherestring = "SELECT * FROM bf_loanmaster WHERE";
有WHERE语句和条件之间没有空格。
答
WHERE
很可能是一个问题。你可能遇到的第二个问题是不把你的字符串放在引号中。例如,它可能应该是wherestring = wherestring + "custName = '"+custname+"' ";
另外要注意的事情:
所有这些追加是非常低效的,使用StringBuilder或StringBuffer的替代。您也可以使用PreparedStatements,这会使您的代码更好地执行,甚至可能使其更易于阅读。
答
添加一个空格后在哪里..你必须单独关键字像哪里..
发布确切的错误跟踪和**最终查询**正在执行! – SudoRahul 2013-05-07 07:35:01
您的sql有一个问题,请发布变量wherestring的最终值 – fmodos 2013-05-07 07:35:26
您忘了每个'else'分支中的AND' – 2013-05-07 07:50:04