我使用Amazon Redshift作为我的数据库。当我使用Java进行数据库调用时,如果给定查询中存在语法错误,则抛出
exception“:”class org.postgresql.util.PSQLException
但是这个例外不仅仅是语法错误。如果连接超时且用户等权限被拒绝,我会收到此异常。
例如:
QUERY 1:select foo from foobar
异常和消息如下:{“exception”:“class org.postgresql.util.PSQLException“,”message“:”ERROR:column \“foo \” 在foobar“}
中不存在
QUERY2:select from foobar
(错过*)
例外:{“exception”:“class org.postgresql.util.PSQLException“,”message“:”错误:语法错误在 或靠近\“从\”\ n位置:80“}
如何使用异常并发现它是由于SQL语法? 因为如果他输入的语法错误,我需要向用户显示它。
答案 0 :(得分:1)
检查异常中的SQL State值:
try {
// code that fails
} catch (PSQLException e) {
if (PSQLState.SYNTAX_ERROR.getState().equals(e.getSQLState())) {
// handle syntax error
} else }
// handle other error
}
}
有关明确定义的SQL状态值的完整列表,请参阅PSQLState的javadoc。