2012-07-10 89 views
0

首先關閉id,注意當有一行信息時有效,但當出於某種原因有很多時不起作用......這就是我的問題所在......由於代碼是體面長,我將它張貼在片:使用JList通過JDBC將表數據保存到數據庫通過JDBC

int count = jTable1.getRowCount(); 

for(int i=0;i<count;i++){ 
//uusi muodostus// 


     SET0listm.add(i, txtTestiNIMI1.getText()); 
     System.out.println("SET0"+SET0listm); 

...

SAVED8listm.addElement(jTable1.getModel().getValueAt(i,7)); 
     System.out.println("SAVED8"+SAVED8listm); 

    } 

移動到字符串,並刪除多餘的部分爲所有像這樣:

String SET0listmtostring = SET0listm.toString(); 
     SET0listmtostring = removeChar(SET0listmtostring, ']'); 
     SET0listmtostring = removeChar(SET0listmtostring, '['); 

String sqla1 = "INSERT INTO MIT(MTY_KOD,MTY_TYY,MTY_ALU,MTY_PAR1,MTY_PAR2,MTY_TOL,MTY_KAN,MTY_DATE) "+"VALUES (?,?,?,?,?,?,?,?)"; 

try{ 
    pst = conn.prepareStatement(sqla1); 

    pst.setString(1, SET0listmtostring); 
    pst.setString(2, SET2listmtostring); 
    pst.setString(3, SET1listmtostring); 
    pst.setString(4, SAVEDlistmtostring); 
    pst.setString(5, SAVED3listmmtostring); 
    pst.setString(6, SAVED5listmmtostring); 
    pst.setString(7, SET3listmtostring); 
    pst.setString(8, SET2listmtostring); 
    pst.executeUpdate();} 
    catch (Exception e) { 
    System.out.println("MITCLAUSE "+e); 
     } 

最後一部分捕捉

MITCLAUSE com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated. 

唐諾什麼德問題是在這裏

+0

爲更好地幫助更快張貼[SSCCE](http://sscce.org/ ) – mKorbel 2012-07-10 14:28:22

回答

0

由於錯誤,我懷疑你設置比列的聲明長度長的字符串之一。在這種情況下,司機必須拋出像這樣的例外。

因此,檢查您的字符串的長度,並將它們與表中列的聲明長度進行比較。

+0

你是正確的我檢查,它實際上迭代代碼重複太多次...所以例如:SAVED8 = [24,24,24,24]是我想要的...而我得到SAVED8 = [24] ,[24,24],[24,24,24],[24,24,24,24] ..所以需要將代碼更改爲僅包含最大版本。 – NeedyHelpo 2012-07-10 17:39:28

+0

其他大小沒有錯誤,但將日期放在4次可能會創建一個慣例錯誤,因爲即時通訊使用varchar30 atm ..所以我會看看是否有效 – NeedyHelpo 2012-07-10 17:49:46

+0

這解決了將它到數據庫的問題......假設現在問題是從1行進入到所有i行 – NeedyHelpo 2012-07-10 17:56:30

0

這似乎是與君子的組合回答和創造元素的新循環將產生所需要的形式