Java 为什么PreparedStatement中的值仅在一列中更新

Java 为什么PreparedStatement中的值仅在一列中更新,java,jdbc,prepared-statement,Java,Jdbc,Prepared Statement,下面的PreparedStatement第2列得到更新,但第1列没有得到更新。请帮忙 PreparedStatement pStmt = conn.prepareStatement( "UPDATE user SET column1 = ? , column2 = ? WHERE id = ?" ) pStmt.setNull( 1, Types.NULL ); pStmt.setNull( 2, Types.NULL ); pStmt.setInt( 3, id); int count =

下面的PreparedStatement第2列得到更新,但第1列没有得到更新。请帮忙

PreparedStatement pStmt = conn.prepareStatement( "UPDATE user SET column1 = ? , column2 = ?  WHERE id = ?" )

pStmt.setNull( 1, Types.NULL );
pStmt.setNull( 2, Types.NULL );
pStmt.setInt( 3, id);
int count = pStmt.executeUpdate();
对我(甲骨文)来说,这很有效。但这要视情况而定,调用时可能需要定义列的类型

sqlType—在java.SQL.Types中定义的SQL类型代码

例如,
VARCHAR

pStmt.setNull(2, java.sql.Types.VARCHAR);

显示
column1
的定义以及您使用的数据库?请提供最小DDL和示例数据,以及。还要指定您正在使用的数据库系统和驱动程序。@CarlosHeuberger这取决于,请参阅这取决于数据库,可能还取决于驱动程序。像OP那样使用
Types.NULL
可以正常工作。@markrotVeel更新了答案