Java 继续之前,请检查jtable中的重复数据

Java 继续之前,请检查jtable中的重复数据,java,swing,Java,Swing,在我当前的项目中,我有一个包含4列的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)) {

在我当前的项目中,我有一个包含4列的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;
    }
} 
String s=”“;
int row=table.getRowCount();

对于(int i=0;i正如我所看到的,您并不是在整个表中进行迭代。您只检查第一行中的数据是否可用。在此之后,该方法注意到第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);
String s=”“;
布尔存在=假;

对于(int i=0;i正如我所看到的,您并不是在整个表中进行迭代。您只检查第一行中的数据是否可用。在此之后,该方法注意到第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);
String s=”“;
布尔存在=假;
对于(inti=0;i试试这个

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;
    }
} 
ArrayList contentList=新建ArrayList();
int row=table.getRowCount();
对于(inti=0;i试试这个

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;
    }
} 
ArrayList contentList=新建ArrayList();
int row=table.getRowCount();
对于(int i=0;i请尝试以下方法:

    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();
    }
int row=jTable1.getRowCount();
对象[]内容=新对象[行];
对于(int i=0;i
将所有行保存在数组中,而不是使用Arrays.asList(content.contains)(value\u to\u find)搜索要查找的值。

尝试以下操作:

    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();
    }
int row=jTable1.getRowCount();
对象[]内容=新对象[行];
对于(int i=0;i

保存数组中的所有行,而不是使用Arrays.asList(content).contains(value\u to\u find)搜索要查找的值

你的问题是什么?它总是向数据库添加数据,即使在第2列中已经有了数据猜测这是一个参数,但我认为他也在比较错误的字符串/行/列。你的问题是什么?它总是向数据库添加数据,即使在第2列中已经有了数据猜测这是一个参数,但我认为他正在比较检查错误的字符串/行/列尝试执行
System.out.println(“行:“s+”与:“+name)”比较)
,看看它们在for循环中是否应该相等。编辑:实际应该修剪什么?@poundPound:过了一段时间,您可以通过单击左侧的接受此答案。尝试执行
System.out.println(“行:”s+比较:“+name)
,看看它们在for循环中是否应该相等。编辑:实际应该修剪什么?@poundPound:过了一段时间,您可以通过单击左侧的来接受这个答案。