繁体   English   中英

mysql jdbc:将真值插入位列变为假

[英]mysql jdbc: inserting true value to a bit column becomes false

mysql jdbc:向位列插入true值将为false,但是命令行客户端可以正常工作。 例如,

雇员

+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id         | varchar(8)  | NO   | PRI | NULL    |       |
| name       | varchar(20) | NO   |     | NULL    |       |
| full_time  | bit(1)      | NO   |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+

命令行:

mysql> insert into Employee (id,name,full_time) values ('100', 'John', true);

mysql> select * from Employee;
+--------+------+-----------+
| id     | name | full_time |
+--------+------+-----------+
| 100    | John |  (symbol) |      
+--------+------+-----------+

mysql> select count(*) from Employee where full_time=true;
+----------+
| count(*) |
+----------+
|        1 |
+----------+
1 row in set (0.00 sec)

作品。

但是JDBC

String sql = "Insert into Employee (id,name,full_time) values (?, ?, ?)";
PreparedStatement s = connection.prepareStatement(sql);
s.setObject(1, "100");
s.setObject(2, "John");
s.setObject(3, true);
s.executeUpdate();

该行已插入,但是full_time列为false。

mysql> select * from Employee;
+--------+------+-----------+
| id     | name | full_time |
+--------+------+-----------+
| 100    | John |           |      
+--------+------+-----------+


mysql> select count(*) from Employee where full_time=true;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

可能是什么问题?

使用setBoolean将true / false值分配给full_time列:

String sql = "Insert into Employee (id, name, full_time) values (?, ?, ?)";
PreparedStatement s = connection.prepareStatement(sql);
s.setString(1, "100");
s.setString(2, "John");
s.setBoolean(3, true);
s.executeUpdate();

始终对要插入/更新的类型使用适当的设置器。 我什至不知道s.setObject(1, '100')编译方式,但是Java中的字符串文字使用双引号,我们应该使用setString在语句中分配它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM