Java mysql jdbc:向位列插入真值将变为假
mysql jdbc:向位列插入真值将变为假,但 命令行客户端工作正常。比如说, 雇员Java mysql jdbc:向位列插入真值将变为假,java,mysql,jdbc,Java,Mysql,Jdbc,mysql jdbc:向位列插入真值将变为假,但 命令行客户端工作正常。比如说, 雇员 +------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ | id | varchar(8)
+------------+-------------+------+-----+---------+-------+
| 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
将真/假值指定给全职
列:
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();
始终为您尝试插入/更新的类型使用适当的setter。我不知道
s.setObject(1,'100')
是如何编译的,但是Java中的字符串文字使用双引号,我们应该使用setString
在语句中分配它们。您是否尝试过全职使用setBoolean方法?尝试过。不是working@Sunnyday我的建议应该对你有用,q.v。你确定你运行了我的代码并且没有其他问题吗?这是我自己的代码问题。setObject(…)也可以工作。谢谢。