具有setString的Java查询无法插入位类型
问题就在这里 我使用的是Netbeans和MySQL的最新版本 我在MySQL中使用位(1)字段类型来管理我的应用程序中的布尔类型 当我在数据库中存储数据时,如果我使用这段代码,一切都很好具有setString的Java查询无法插入位类型,java,mysql,bit,setstring,Java,Mysql,Bit,Setstring,问题就在这里 我使用的是Netbeans和MySQL的最新版本 我在MySQL中使用位(1)字段类型来管理我的应用程序中的布尔类型 当我在数据库中存储数据时,如果我使用这段代码,一切都很好 PreparedStatement st = con.prepareStatement("INSERT INTO `postetransfo`.`utilisateur`" + " (`dbLogin`, `dbMDP`, `dbNom`, `dbPrenom`, `dbAjP
PreparedStatement st = con.prepareStatement("INSERT INTO `postetransfo`.`utilisateur`"
+ " (`dbLogin`, `dbMDP`, `dbNom`, `dbPrenom`, `dbAjPoste`, `dbModPoste`, `dbMajPoste`, `dbAjMesure`,"
+ " `dbModMesure`, `dbDroitAdmin`, `dbTracerAdmin`) VALUES (?,?,?,?,b'0',b'0',b'0',b'0',b'0',b'0',?)");
st.setString(1, login);
st.setString(2, "changemoi");
st.setString(3, nom);
st.setString(4, prenom);
//st.setString(5, "b'0'");
//st.setString(5, "b'0'");
// st.setString(6, "b'0'");
// st.setString(7, "b'0'");
// st.setString(8, "b'0'");
// st.setString(9, "b'0'");
st.setString(5, "TEST");
但是当我想使所有查询都动态时,我得到了以下异常
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'dbAjPoste' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4118)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1379)
对于位参数,您应该使用
setBoolean
而不是setString
。数据截断:第1行“dbAjPoste”列的数据太长意味着您希望存储的值大于DB中的大小
**
- 范例
希望它对您有用。似乎您试图放入字段
dbAjPoste
的数据与架构中实际数据类型的大小不匹配。您可以尝试使用st.setBoolean()-但我不确定它是否有效