2013-05-08 15 views
0

這裏的Java查詢問題 我使用NetBeans和MySQL的最新版本 我使用的位(1)字段類型在MySQL在我的應用程序來管理布爾類型用了setString無法插入位類型

當在數據庫中存儲的數據,如果我用這個代碼一切正常

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) 
+0

好像你正在試圖把進入該領域的數據'dbAjPoste'不匹配架構中的實際數據類型的大小。 – NilsH 2013-05-08 11:42:42

+0

你可以嘗試st.setBoolean() - 但我不確定它會工作 – DaveH 2013-05-08 11:43:31

回答

0

對於BIT參數,您應該使用setBoolean而不是setString

0

數據截斷:第1行的列'dbAjPoste'的數據過長意味着您想要存儲的值大於DB中存在的大小。

**

**

明杆1型VARCHAR2(5),但你要插入的字符串值,如 「ABCDEFGHIJ」。 字符串的長度是10,但在數據庫中它只能佔用5個字符。

希望這對您有用..

相關問題