Skip to content

Commit 425e63a

Browse files
authored
Merge pull request #10807 from mladensavic94/master
insert null into Integer column using JDBC
2 parents 626035e + 59b3081 commit 425e63a

3 files changed

Lines changed: 124 additions & 0 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.baeldung.insertnull;
2+
3+
import java.sql.Connection;
4+
import java.sql.DriverManager;
5+
import java.sql.SQLException;
6+
import java.sql.Statement;
7+
8+
public class DBConfig {
9+
10+
private static Connection INSTANCE;
11+
12+
public static Connection getConnection() throws SQLException {
13+
if (INSTANCE == null) {
14+
INSTANCE = DriverManager.getConnection("jdbc:h2:mem:insertnull", "user", "password");
15+
createPersonTable();
16+
}
17+
return INSTANCE;
18+
}
19+
20+
private static void createPersonTable() throws SQLException {
21+
try(Statement statement = INSTANCE.createStatement()) {
22+
String sql = "CREATE TABLE Person (id INTEGER not null, name VARCHAR(50), lastName VARCHAR(50), age INTEGER, PRIMARY KEY (id))";
23+
statement.executeUpdate(sql);
24+
}
25+
}
26+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.baeldung.insertnull;
2+
3+
public class Person {
4+
5+
private Integer id;
6+
private String name;
7+
private String lastName;
8+
private Integer age;
9+
10+
public Person(Integer id, String name, String lastName, Integer age) {
11+
this.id = id;
12+
this.name = name;
13+
this.lastName = lastName;
14+
this.age = age;
15+
}
16+
17+
public Integer getId() {
18+
return id;
19+
}
20+
21+
public void setId(Integer id) {
22+
this.id = id;
23+
}
24+
25+
public String getName() {
26+
return name;
27+
}
28+
29+
public void setName(String name) {
30+
this.name = name;
31+
}
32+
33+
public String getLastName() {
34+
return lastName;
35+
}
36+
37+
public void setLastName(String lastName) {
38+
this.lastName = lastName;
39+
}
40+
41+
public Integer getAge() {
42+
return age;
43+
}
44+
45+
public void setAge(Integer age) {
46+
this.age = age;
47+
}
48+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.baeldung.insertnull;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import java.sql.PreparedStatement;
6+
import java.sql.SQLException;
7+
import java.sql.Types;
8+
9+
import static org.hamcrest.CoreMatchers.equalTo;
10+
import static org.hamcrest.MatcherAssert.assertThat;
11+
12+
public class InsertNullUnitTest {
13+
14+
private final String SQL = "INSERT INTO Person VALUES(?,?,?,?)";
15+
16+
@Test
17+
public void givenNewPerson_whenSetNullIsUsed_thenNewRecordIsCreated() throws SQLException {
18+
Person person = new Person(1, "John", "Doe", null);
19+
20+
try (PreparedStatement preparedStatement = DBConfig.getConnection().prepareStatement(SQL)) {
21+
preparedStatement.setInt(1, person.getId());
22+
preparedStatement.setString(2, person.getName());
23+
preparedStatement.setString(3, person.getLastName());
24+
if (person.getAge() == null) {
25+
preparedStatement.setNull(4, Types.INTEGER);
26+
}
27+
else {
28+
preparedStatement.setInt(4, person.getAge());
29+
}
30+
int noOfRows = preparedStatement.executeUpdate();
31+
32+
assertThat(noOfRows, equalTo(1));
33+
}
34+
}
35+
36+
@Test
37+
public void givenNewPerson_whenSetObjectIsUsed_thenNewRecordIsCreated() throws SQLException {
38+
Person person = new Person(2, "John", "Doe", null);
39+
40+
try (PreparedStatement preparedStatement = DBConfig.getConnection().prepareStatement(SQL)) {
41+
preparedStatement.setInt(1, person.getId());
42+
preparedStatement.setString(2, person.getName());
43+
preparedStatement.setString(3, person.getLastName());
44+
preparedStatement.setObject(4, person.getAge(), Types.INTEGER);
45+
int noOfRows = preparedStatement.executeUpdate();
46+
47+
assertThat(noOfRows, equalTo(1));
48+
}
49+
}
50+
}

0 commit comments

Comments
 (0)