Jdbc preparedStatement.setNull(int-parameterIndex,int-sqlType) 问题1

Jdbc preparedStatement.setNull(int-parameterIndex,int-sqlType) 问题1,jdbc,Jdbc,你能告诉我当sPhoneExt为空时,使用下面的代码我将获得什么好处吗 如果sPhoneExt==null | | sPhoneExt.trim.equals{ stmt.setNull9,java.sql.Types.INTEGER; }否则{ stmt.SetString 9,sPhoneExt; } 代替stmt.setString9,sPhoneExt 因为iPhoneType=rset.getIntphone_type;如果值为SQL NULL,则返回0;这是我不想要的 问题2 奇怪的

你能告诉我当sPhoneExt为空时,使用下面的代码我将获得什么好处吗

如果sPhoneExt==null | | sPhoneExt.trim.equals{ stmt.setNull9,java.sql.Types.INTEGER; }否则{ stmt.SetString 9,sPhoneExt; } 代替stmt.setString9,sPhoneExt

因为iPhoneType=rset.getIntphone_type;如果值为SQL NULL,则返回0;这是我不想要的

问题2 奇怪的是stmt.setString9执行null,rset.getIntphone_类型的返回结果是什么

答复2 getInt在DB中为null时将返回零。您必须使用下面的代码来了解DB NULL

如果rs.wasNull{ //句柄空字段值 }
在这种字符串情况下使用setNull没有任何好处。 它仅用于检查空字符串并在DB中插入null。但对于这一点,我们也可以像stmt.setString9,null那样做

但当sPhoneExt为整数并保持null时,则无法执行 stmt.setInt9,sPhoneExt;自setInt起,int API执行;将解装箱sPhoneExt Integer转换为基元int,这样您将得到NullPointerException。所以您需要stmt.setNull9,java.sql.Types.INTEGER

最后,如果您在DB中为NUMBER sql type列插入了null;getInt将仅返回0

这与下面的空集机制无关

stmt.setString9,空; stmt.setNull9,java.sql.Types.INTEGER 还有人告诉我DB NUMBER列什么时候有默认值;默认值将被上述两条线不同地考虑。但事实并非如此。即使在这种情况下,上述两行的执行方式也是相同的。设置空值;不是默认值

创建表t1 id号默认为1; 插入t1 id值2; 导入java.sql.Connection; 导入java.sql.DriverManager; 导入java.sql.PreparedStatement; 导入java.sql.ResultSet; 公共类TestDB{ 公共静态字符串参数[]{ PreparedStatement stmt=null; 结果集rs=null; 连接con=null; 试一试{ Class.forNameoracle.jdbc.driver.OracleDriver; con=DriverManager.getConnectionjdbc:oracle:thin:@10.201.32.92:1521:psprd1,用户名,密码; 字符串查询=null; 字符串l=null; ResultSet-rset=null; int参数索引=1; query=更新t1+设置id=?; stmt=con.prepareStatementquery; stmt.setIntparamIndex++,空; //stmt.setNull1,java.sql.Types.INTEGER; stmt.executeUpdate; stmt.close; 查询=从t1中选择id; stmt=con.prepareStatementquery; rset=stmt.executeQuery; rset.next; System.out.printlnset.getStringid; }捕获异常{ 例如,打印跟踪; }最后{ 试一试{ rs.close; stmt.close; con.close; }捕获异常e{ e、 打印跟踪; } } } }
我很好奇,你数据库中sPhoneExt的数据类型是什么?你为什么要尝试使用setString。。在存储和获取时。。当您试图检索时,它在java中声明为字符串。以分贝为单位的数字。