根据oracle文档 -
https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html#setBoolean(int,%20boolean)
setBoolean(int parameterIndex,boolean x)
方法将指定参数设置为给定的Java布尔值。驱动程序在将数据发送到数据库时将其转换为SQL BIT或BOOLEAN值。
这里有什么方法可以知道该值何时存储为SQL BIT?什么时候它会以BOOLEAN的形式存储?
我正在使用oracle数据库,我使用此方法将值传递为true(Java布尔值),并且存储在数据库中的值为1而不是Y.可能是什么原因?
答案 0 :(得分:3)
由于它显示为Oracle doesn't have either BIT or BOOLEAN as a storage data type,因此请勿使用setBoolean
。它被定义为适用于那些类型的列。
相反,如果它是CHAR(1)
,请使用setString
,而对您来说,任何值都表示“true”和“false”。例如,从您的问题中,您可能期望Y和N:
.setString(index, x ? "Y" : "N");