2012-11-26 77 views
1

在我當前的項目中,我有一個4列的jtable。我不想在第二列中存儲重複數據,因此我在將它存儲到數據庫之前檢查jtable中的每一行。在繼續之前檢查jtable中的重複數據

這裏是我的代碼:

String s=""; 
int row = table.getRowCount(); 
for (int i=0; i<row; i++) 
{ 
    s = table.getValueAt(i, 1).toString().trim(); 
    if (name.getText().equals(s)) 
    { 
     JOptionPane.showMessageDialog(null, "data alreadyexist.","message",JOptionPane.PLAIN_MESSAGE); 
    break; 
    } else { 
     add(); 
     break; 
    } 
} 
+0

什麼是你的問題或問題? – reporter

+0

它總是將數據添加到數據庫中,即使在第2列中已經有該數據 –

+0

什麼是'name'在這裏? – vels4j

回答

1

您完成整個表地圖無法重複,因爲我可以看到它。您只檢查,如果數據在第一行是aviv。在此之後,該方法通知可能在第2行中有相同的數據並且中斷,因此您添加了1行並停止了,因爲您逐行檢查了它,並且每行都不匹配,您添加了一個新行,直到他找到一排匹配您要添加的一個

String s = ""; 
boolean exists = false; 
for (int i=0; i<table.getRowCount(); i++) 
{  
    s = table.getValueAt(i, 1).toString().trim(); 
    if(name.equals(s)) 
    { 
     exists = true; 
     break; 
    ) 
) 
if(!exists) 
    add(); 
else 
    JOptionPane.showMessageDialog(null, "data already exist.","message",JOptionPane.PLAIN_MESSAGE); 

現在你只需要檢查字符串,你所追求的是trimed正確的方式,它應該工作

+0

不起作用,它仍然保存重複的數據分貝 –

+0

嘗試做'System.out.println(「Row:」s +「比較:」+ name)'看看它們在for循環中是否應該相等。編輯:什麼應該修剪實際修剪? – SomeJavaGuy

+0

它的工作,謝謝凱文 –

1

試試這個

ArrayList<String> contentList = new ArrayList(); 
int row = table.getRowCount(); 
for (int i=0; i<row; i++) 
{ 
    String str = table.getValueAt(i, 1).toString().trim(); 
    if (contentList.contains(str)) 
    { 
     JOptionPane.showMessageDialog(null, "data alreadyexist.","message",JOptionPane.PLAIN_MESSAGE); 
     break; 
    } else { 
     contentList.add(str); 
     add(); 
     break; 
    } 
} 
1

試試這個:

int row = jTable1.getRowCount(); 
    Object[] content = new Object[row]; 
    for (int i = 0; i < row; i++) { 
     content[i] = jTable1.getValueAt(i, 0); 
    } 
    Object value_to_find= 2000; 
    boolean exist = Arrays.asList(content).contains(value_to_find); 
    if (exist){ 
     JOptionPane.showMessageDialog(null, "Value exist", "Duplicate", JOptionPane.ERROR_MESSAGE); 
    } else { 
     addRow(); 
    } 

保存使用Arrays.asList(內容)。載有(value_to_find)都排在一個陣列比搜索value_to_find