如何从java中获取redshift中的语法错误?

时间:2015-09-14 16:46:02

标签: java mysql postgresql

我使用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语法? 因为如果他输入的语法错误,我需要向用户显示它。

1 个答案:

答案 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。