- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题#1
谁能告诉我,当 sPhoneExt
使用以下代码时,我将获得什么好处?是 null
?
if (sPhoneExt == null || sPhoneExt.trim().equals("")) {
stmt.setNull(9, java.sql.Types.INTEGER);
} else {
stmt.setString(9, sPhoneExt);
}
stmt.setString(9, sPhoneExt);
iPhoneType = rset.getInt("phone_type");
将返回
0
如果值为 SQL
NULL
;我不想要的。
stmt.setString(9, null)
执行什么将返回
rset.getInt("phone_type")
?
getInt()
当它在 DB 中为 null 时将返回零。您必须使用以下代码才能了解 DB
NULL
.
if (rs.wasNull()) {
// handle NULL field value
}
最佳答案
我认为使用 setNull
没有任何好处在这个字符串的情况下。
它仅用于检查空字符串“”并在数据库中插入空值。但为此我们也可以像 stmt.setString(9, null);
那样做
但是当 sPhoneExt 为 Integer 并保持 null 时,则我们无法执行stmt.setInt(9, sPhoneExt);
自 setInt(int, int)
API 执行;将 (Unboxing) sPhoneExt (Integer) 转换为原始 (int),因此您将获得 NullPointerException。所以你需要stmt.setNull(9, java.sql.Types.INTEGER);
最后,如果您在数据库中为 NUMBER(sql 类型)列插入了空值; getInt() 将只返回 0。
这与下面的空集机制无关。
stmt.setString(9, null);
stmt.setNull(9, java.sql.Types.INTEGER)
NULL
值(value);不是默认值。
create table t1 (id number default 1 );
insert into t1 (id) values (2);
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class TestDB {
public static void main(String args[]) {
PreparedStatement stmt = null;
ResultSet rs = null;
Connection con = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection("jdbc:oracle:thin:@10.201.32.92:1521:psprd1", "username", "password");
String query = null;
String l = null;
ResultSet rset = null;
int paramIndex = 1;
query = "UPDATE t1 " + " SET id = ?";
stmt = con.prepareStatement(query);
stmt.setInt(paramIndex++, null);
// stmt.setNull(1, java.sql.Types.INTEGER);
stmt.executeUpdate();
stmt.close();
query = "select id from t1 ";
stmt = con.prepareStatement(query);
rset = stmt.executeQuery();
rset.next();
System.out.println(rset.getString("id"));
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
关于jdbc - PreparedStatement.setNull(int parameterIndex, int sqlType),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12424287/
PreparedStatement接口(interface)中的setNull()方法有什么用?我查看了this发布。 它说:如果没有 setNull(..) 方法,就无法为 Java 原语设置 nu
Java PreparedStatement 提供了显式设置 Null 值的可能性。这种可能性是: prepStmt.setNull(parameterIndex, Types.VARCHAR); 此
请有人告诉我如何在 Symfony 2 中设置 onDelete: SetNull ?这是示例: oneToOne: Company: targetEntity: Compan
我的数据库中有一个非常大的表。其中一些字段可能为空。 我只想避免使用: PreparedStatement.setNull(index, Type.X) 喜欢: if(obj.getSomaData(
我将 Postgresql 与 HikariCP 一起使用,我的查询类似于 SELECT * FROM my_table WHERE int_val = ? ... 现在,我想为我的变量设置 NULL
这个问题已经有答案了: Why does PreparedStatement.setNull requires sqlType? (3 个回答) 已关闭 1 年前。 我有一个带有 Mysql DB 的
我用一个表做了一个实验,该表有一个带有空值的 VARCHAR 列,试图获取具有特定列 NULL 的行数。我使用了三种形式: 表格A SELECT COUNT(*) FROM buyers WHERE
我正在使用 EF Core 1.1.0,并且级联行为存在严重问题。 我有一个名为 Land 的模型,如下所示: public class Land { public long Id { get
当 MySQL 列类型为 TEXT 时,我应该使用什么 java.sql.Types 在准备好的语句中设置 NULL?我在这里没有看到类型文本:http://docs.oracle.com/javas
根据 PreparedStatement.setNull 的 java 文档:“注意:您必须指定参数的 SQL 类型”。方法需要列的SQL类型是什么原因? 我注意到传递 java.sql.Types.
问题#1 谁能告诉我,当 sPhoneExt 使用以下代码时,我将获得什么好处?是 null ? if (sPhoneExt == null || sPhoneExt.trim().equals(""
我正在我的 JAVA 应用程序和 PostgreSQL 数据库中进行过滤搜索。 我有以下用于选择航类数据的 PostgreSQL 查询: String query = "SELECT flight.
我正在 JDBC 中针对 Oracle 11g 数据库执行 PreparedStatement 查询,发现传递 null 参数的结果与在查询本身中定义“is null”不同。 例如,这个查询: Str
我想根据我得到的类型在运行时设置空值 这是我的代码 @SuppressWarnings("rawtypes") // input can be Intger,Date, BigInt etc whic
我正在尝试将 int 值上传到我的数据库表,该值可能为空。我有以下代码: ps = connection.prepareStatement("INSERT INTO table1 (COL1) VAL
下面的语句有什么区别。 PreparedStatement.setNull(1, java.sql.Types.NULL); 和 PreparedStatement.setNull(1, java.s
对于可选关系(当外键可以接受 Null 时),一个新的 ClientSetNull自 EF Core 2.0 起引入了行为 默认 删除行为的选项 DeleteBehavior.ClientSetNul
我正在尝试使用 Java 调用存储过程。 我已经查看了类似的错误,并已尝试复制解决方案,但仍然有错误。 java.sql.SQLException:调用中的参数无效:对用户定义类型和 REF 类型使用
我是一名优秀的程序员,十分优秀!