2017-03-26 180 views
-2

如何在插入到(SQLite)数据库之前检查数据是否存在。我目前使用Java作为平台。如何在插入到(SQLite)数据库之前检查数据是否存在

Statement stmt = conn.createStatement(); 
String query ="SELECT * FROM tb_hall Where Activity_Name'"+txtTime+"'"; 
ResultSet rs = stmt.executeQuery(query); 
if(rs.next()) { 
    String sql = "Insert into tb_hall (Activity_Name, Organization, Venue, Date, Time) values(?, ?, ?, ?, ?)"; 
    pst = conn.prepareStatement(sql); 
    pst.setString(1, txtAct.getText()); 
    pst.setString(2, txtOrg.getText()); 
    pst.setString(3, rgbGroup.getSelection().getActionCommand()); 
    pst.setString(4, ((JTextField) date.getDateEditor().getUiComponent()).getText()); 
    pst.setString(5, txtTime.getText());     
    pst.execute(); 
    JOptionPane.showMessageDialog(null, "Saved!"); 
    txtAct.setText(null); 
    txtOrg.setText(null); 
    rgbGroup.clearSelection(); 
    date.setDate(null); 
    txtTime.setText(null); 

    // ... 

不幸的是它显示,看起来像这样一个很长的错误消息:this

+0

使用SELECT。除了[可能的SQL注入](http://bobby-tables.com/)你当前的代码有什么问题? –

+0

嗨,不幸的是,它显示了一个非常长的错误消息 – jjang

+0

我明白了,因为我们大多数人看不到你的屏幕,你可以复制/粘贴消息在你的问题([编辑](http://stackoverflow.com/posts/) 43026437 /编辑)它) –

回答

0

你可以尝试使用count子句检查是否与活动名称的任何记录中已经存在的数据库或没有。并根据针对该特定活动名称获得的行数,您可以执行进一步的操作。

这样会至少让你知道每个查询是否出现问题,或者当前查询出现问题,因此我们可以很容易地找出问题所在。

+0

嗨,感谢您的建议:)我用它,但仍然给我一个非常长的错误信息。我其实不确定我是否应该交换INSERT和SELECT部分 – jjang

0

我不能肯定地说因为你发布的错误图片是截断的,但我认为你有一个GUI错误。从图片剪辑看来,GUI组件出现语法错误。如果你可以显示整个错误信息,这将有所帮助。

0

在将数据插入数据库之前设计一个函数来验证您的数据如何?例如:

public boolean isDataValid(Data data) { 
    ..... 
} 

public void saveDataToDB(Data data) { 
    if(isDataValid(data)) { 
     // write data to db 
    } else { 
     // invalid data handling 
    } 
} 
相关问题