當我向「ID」提供非法值時,我期望「嘗試」失敗並觸發「catch」子句。try-catch子句不起作用
PreparedStatement ps1=conn.prepareStatement("insert into Table_1(id values(?)");
try{
ps1.setString(1,ID);
ps1.executeUpdate();
conn.commit();
} catch(Exception EX){
logger.error("Failed insert to table "+v.getId());
logger.error(EX.getMessage(), EX);
EX.printStackTrace();
try{
conn.rollback();
}catch(Exception ex){
ex.printStackTrace();
logger.error("Cannot rollback connection");
logger.error(ex.getMessage(),ex);
System.exit(1);
}
}
取而代之,我得到以下異常,程序終止。這似乎是問題連接到「ps1.executeUpdate();」線。
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Disallowed implicit conversion from data type ntext to data type varchar, table 'Table_1', column 'id'. Use the CONVERT function to run this query.
我可以得到一個異常,此外,我想在ID非法時發生異常。但是,我不明白爲什麼catch語句沒有被觸發。
任何想法?
'TABLE_1(id'那裏有一個缺失paranthesis? – SomeJavaGuy
的'prepareStatement()'是之前的'嘗試''catch'塊,因此錯誤不會被捕獲。 –